Как задать размер шрифта заголовка фигуры и меток осей?
Я создаю график в Matplotlib следующим образом:
from matplotlib import pyplot as plt
fig = plt.figure()
plt.plot(data)
fig.suptitle('test title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
fig.savefig('test.jpg')
Мне нужно указать разные размеры шрифтов для заголовка фигуры и меток осей. Все три элемента должны иметь разные размеры шрифтов, поэтому настройка глобального размера шрифта (mpl.rcParams['font.size'] = x
) мне не подходит. Как я могу задать индивидуальные размеры шрифтов для заголовка фигуры и меток осей?
5 ответ(ов)
Вы также можете установить эти параметры глобально с помощью словаря rcParams
. Вот пример кода:
import matplotlib.pylab as pylab
params = {
'legend.fontsize': 'x-large',
'figure.figsize': (15, 5),
'axes.labelsize': 'x-large',
'axes.titlesize': 'x-large',
'xtick.labelsize': 'x-large',
'ytick.labelsize': 'x-large'
}
pylab.rcParams.update(params)
Таким образом, задав данные параметры, вы измените стиль отображения графиков во всей вашей работе с Matplotlib.
Если вы больше привыкли использовать объекты ax
для построения графиков, вы можете найти метод ax.xaxis.label.set_size()
более удобным для запоминания или, по крайней мере, проще находить с помощью клавиши таб в терминале ipython. Кажется, после изменения размера метки необходимо выполнить перерисовку, чтобы увидеть эффект. Вот пример:
import matplotlib.pyplot as plt
# создаем график с тестовыми данными
fig, ax = plt.subplots()
x = [0, 1, 2]
y = [0, 3, 9]
ax.plot(x, y)
# заголовок и метки, устанавливаем начальные размеры
fig.suptitle('тестовый заголовок', fontsize=12)
ax.set_xlabel('xlabel', fontsize=10)
ax.set_ylabel('ylabel', fontsize='medium') # относительно plt.rcParams['font.size']
# установка размеров меток после их создания
ax.xaxis.label.set_size(20)
plt.draw()
Я не знаю аналогичного способа задать размер заголовка после его создания.
Если вы не создаёте объекты фигур и осей явно, вы можете задать размер шрифта заголовка, используя аргумент fontdict
при создании заголовка.
Вы можете отдельно задать размеры шрифтов для подписей осей x и y, используя аргумент fontsize
при их создании.
Например:
plt.title('Цены на автомобили растут', fontdict={'fontsize': 20})
plt.xlabel('Год', fontsize=18)
plt.ylabel('Цена', fontsize=16)
Это также будет работать с визуализациями, созданными с помощью Seaborn и Pandas (когда Matplotlib используется как backend)!
Альтернативным решением для изменения размера шрифта является изменение отступов. Когда вы сохраняете свой PNG в Python, вы можете изменить разметку, используя диалоговое окно, которое откроется. На этом этапе можно настроить расстояние между осями, отступы, если хотите.
Чтобы разместить right_ax
перед вызовом set_ylabel()
, просто переместите код, который создает right_ax
, так чтобы он находился перед вызовом метода set_ylabel()
. Например, если у вас есть код, который создает подграфик (axes), выполните следующее:
# Создайте основной и правый оси
fig, ax = plt.subplots()
right_ax = ax.twinx() # Создаем правую ось (right_ax)
# Теперь устанавливаем подпись для правой оси
right_ax.set_ylabel('AB scale')
Таким образом, вы будете устанавливать подпись для правой оси right_ax
после его создания.
Изменение частоты делений по оси X или Y
Как вынести легенду за пределы графика
Сохранить график в файл изображения вместо его отображения
Как сделать графики Matplotlib отображаемыми внутри IPython-ноутбука?
Как изменить размер шрифта на графике matplotlib