Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/24: Рейтинг темы: голосов - 24, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 18.06.2020
Сообщений: 13
1

Подписи осей в Matplotlib

13.01.2021, 13:51. Показов 4942. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Пытаюсь сделать так, чтоб на оси Х значения подписывались через каждые 2 + к этому добавить нужные мне значения

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
for col in df.columns:
        sns.set_style('white')
 
        sns_plot = sns.distplot(df[col], color = 'SteelBlue', norm_hist= ' True', hist_kws=dict(edgecolor="black",  linewidth=1),  )
        fig = sns_plot.get_figure()
        ax = fig.gca()
        srednee = np.mean(df[col])
        lev = (srednee - np.std(df[col]))
        prav = (srednee + np.std(df[col]))
 
        [B]loc = ticker.MultipleLocator(base=2.0)  
        ax.xaxis.set_major_locator(loc)[/B]
        ax.yaxis.set_major_formatter(FuncFormatter(lambda y, _: '{:.0%}'.format(y)))
        ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
        [B]plt.xticks([srednee, lev, prav])[/B]
        ax.xaxis.set_major_locator(loc)
        
 
 
 
        plt.title("{}".format(str(col)), fontweight="bold")
        plt.axvline(np.mean(df[col]), 0, max(df[col]), color = 'r', linestyle = '--')
        plt.axvline(lev, 0, max(df[col]), color = 'r', linestyle = '-')
        plt.axvline(prav, 0, max(df[col]), color = 'r', linestyle = '-')
Но почему-то и то, и другое одновременно не работает... Не понимаю, почему так. Помогите, пожалуйста!



А еще если пытаюсь вынести подписи в легенду, то почему-то текст отображается со скобками и кавычками

Python
1
2
3
text = 'Среднее = ' +'{:.1f}'.format(srednee) ,  "Станд откл = "+'{:.1f}'.format(np.std(df[col]))
        legend = plt.legend(labels=[text], loc='upper left')
        plt.setp(legend.get_texts(), color='r')
Миниатюры
Подписи осей в Matplotlib  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2021, 13:51
Ответы с готовыми решениями:

Масштаб осей [matplotlib]
Как сделать так, чтобы в на графике 1 оси x по длинне соответствовала 1 оси y? А если можно, то как...

Фиксирование масштаба одной из осей на графике (MatPlotLib)
Здравствуйте! Имеется Python (3.4.3) с подключённым MatPlotLib. На осях координат два...

Ускорение обновления графика matplotlib в kivy с использованием matplotlib.animation
Всем добрый день. Я пытаюсь оптимизировать вывод графиков matplotlib в режиме реального времени....

matplotlib.pyplot работает, а matplotlib нет
Не могу понять. Почему import matplotlib.pyplot as plt x = plt.plot(x) plt.show() ...

Подписи значений осей
Не подскажете, как в TChart сделать, чтобы на осях были подписаны не координаты точек серии, а...

8
Эксперт Python
4632 / 2050 / 361
Регистрация: 17.03.2012
Сообщений: 10,133
Записей в блоге: 6
13.01.2021, 17:38 2
Цитата Сообщение от SirSir Посмотреть сообщение
каждые 2 + к этому добавить нужные мне значения
Чего?
0
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 9
08.06.2023, 18:48 3
Вопрос на тему меток осей - как задать шрифт для вывода меток?
Не только размер, но сам шрифт
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
08.06.2023, 19:10 4
xkein, в документации посмотреть? Не, не слышал...
Python
1
ax.set_xlabel('vz', fontfamily='Terminal')
1
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 9
08.06.2023, 21:05 5
много чего смотрел, явного простого метода не смог найти ...
set_xlabel() - это подпись к осям, не сами метки с числовыми значениями оси ...

с этим нет проблем, например так:
font_prop = FontProperties(family="Times New Roman", size=12)
ax.set_xlabel('Дисперсия глубины залегания изотермы', fontproperties=font_prop)

что-то должно быть типа
sf = ScalarFormatter()

sf.format(..fontproperties=font_prop)
именно так не тоже не работает, не могу найти описания всех методов форматтеров ...
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
09.06.2023, 14:06 6
xkein, залез в доку и навскидку нашел такой вариант. Поставь глобально
Python
1
2
3
4
5
6
7
8
9
10
import numpy as np
from matplotlib import pyplot as plt
 
# plt.rcParams.update({'font.family':'Comic Sans MS'})
fg, ax = plt.subplots()
ax.set_title('Font testing')
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
Подписи осей в Matplotlib
Подписи осей в Matplotlib

Отдельно на каждый элемент также ставится. Ищи в доках
0
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 9
09.06.2023, 20:50 7
спасибо!
попробую

Добавлено через 4 часа 31 минуту
доки - это это ?
https://matplotlib.org/stable/... fonts.html

Добавлено через 12 минут
глобально - так?
matplotlib.rcParams['font.family'] = 'Times New Roman'

так не помогает, что-то не понимаю в доках ....
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
09.06.2023, 20:51 8
Цитата Сообщение от xkein Посмотреть сообщение
так не помогает
Елки-палки, в моем примере посмотри
Цитата Сообщение от xkein Посмотреть сообщение
доки - это это ?
Это это
https://matplotlib.org/stable/... mmary.html
0
0 / 0 / 0
Регистрация: 05.04.2019
Сообщений: 9
09.06.2023, 21:34 9
Спасибо за ссылку, именно такую инфу пытался найти.
Я правильно понимаю, что возможности задать шрифт для этого метода нет:
<<<
class matplotlib.ticker.ScalarFormatter(useOffset=None, useMathText=None, useLocale=None)[source]
Bases: Formatter

Format tick values as a number.

Parameters:
useOffsetbool or float, default: rcParams["axes.formatter.useoffset"] (default: True)
Whether to use offset notation. See set_useOffset.

useMathTextbool, default: rcParams["axes.formatter.use_mathtext"] (default: False)
Whether to use fancy math formatting. See set_useMathText.

useLocalebool, default: rcParams["axes.formatter.use_locale"] (default: False).
Whether to use locale settings for decimal sign and positive sign. See set_useLocale.
<<

У меня очень конкретная проблема -
как вывести ticklabel через ScalarFormatter шрифтом Times New Roman / 12

прочитал за 2 дня несколько мануалов , почти уверен, что их авторы на этот вопрос не ответят ()
Может, кто сталкивался ?
0
09.06.2023, 21:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2023, 21:34
Помогаю со студенческими работами здесь

Подписи осей Chart
Добрый день. Прошу о помощи. Построил график Chart в VS 2010, перенес туда данные, все норм......

Подписи осей на диаграмме
Всем привет! В общем нужно сделать сравнительную диаграмму (пример на рисунке). На оси Х должны...

Не отображаются подписи осей
При выполнении никак не подписываются оси, не могу понять: что не так? Кто знает - подскажите,...

Как увеличить значения осей графика в matplotlib
Есть такой код from sympy import * var('x y') plot_implicit(Eq((x+5)**2/3+y**2, 5)) Как...

DynamicDataDisplay подписи меток осей
привет. Столкнулся с проблемой в DynamicDataDisplay. Проблема в том что подписи &quot;тиков&quot; на осях...

Matplotlib. Перерисовка графика после изменения положения осей
Разрабатываю приложение для построения графиков с помощью matplotlib и Tkinter. Добавила функцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru