На рисунке matplotlib, как я могу сделать размер шрифта для надписей галочкой ax1.set_xticklabels()
меньшим?
Кроме того, как можно повернуть его из горизонтального в вертикальное положение?
На рисунке matplotlib, как я могу сделать размер шрифта для надписей галочкой ax1.set_xticklabels()
меньшим?
Кроме того, как можно повернуть его из горизонтального в вертикальное положение?
Ответы:
Обратите внимание, что в более новых версиях MPL есть ярлык для этой задачи. Пример показан в другом ответе на этот вопрос: https://stackoverflow.com/a/11386056/42346
Код ниже приведен для иллюстративных целей и не обязательно может быть оптимизирован.
import matplotlib.pyplot as plt
import numpy as np
def xticklabels_example():
fig = plt.figure()
x = np.arange(20)
y1 = np.cos(x)
y2 = (x**2)
y3 = (x**3)
yn = (y1,y2,y3)
COLORS = ('b','g','k')
for i,y in enumerate(yn):
ax = fig.add_subplot(len(yn),1,i+1)
ax.plot(x, y, ls='solid', color=COLORS[i])
if i != len(yn) - 1:
# all but last
ax.set_xticklabels( () )
else:
for tick in ax.xaxis.get_major_ticks():
tick.label.set_fontsize(14)
# specify integer or one of preset strings, e.g.
#tick.label.set_fontsize('x-small')
tick.label.set_rotation('vertical')
fig.suptitle('Matplotlib xticklabels Example')
plt.show()
if __name__ == '__main__':
xticklabels_example()
plt.setp
. (Также посмотрите ax.tick_params
) Например, вы можете просто сделать plt.setp(ax.get_xticklabels(), rotation='vertical', fontsize=14)
. Кроме того, у объектов осей есть ax.is_last_row()
метод, который может быть полезен в случаях, подобных вашему примеру. Вместо if i != len...
, вы можете сделать if not ax.is_last_row()
. (Почему это метод, я понятия не имею ... Matplotlib ненавидит свойства, по-видимому!)
is_last_row()
, спасибо! Я использовал plt.setp
в прошлом, и не обязательно был уверен, что он представляет собой более канонический способ настройки меток. Вы удалили это сомнение, спасибо. В более широком смысле: ваши ответы, особенно в matplotlib
теге, часто вызывают у меня страх. Продолжайте в том же духе.
plt.setp
является "matlab-ism", и явный цикл, вероятно, гораздо более питонический. Будучи новообращенным матлабом, я себя setp
чувствую естественно, но каждому свое. Любой из них вполне читабелен, IMO
ax.tick_params(axis='x', labelsize=8)
get_ticklabels
неget_major_ticks
Есть более простой способ на самом деле. Я только что нашел:
import matplotlib.pyplot as plt
# We prepare the plot
fig, ax = plt.subplots()
# We change the fontsize of minor ticks label
ax.tick_params(axis='both', which='major', labelsize=10)
ax.tick_params(axis='both', which='minor', labelsize=8)
Это только ответ на размер label
части вашего вопроса, хотя.
axis = 'x'
или axis = 'y'
чтобы изменить только одну из осей
Чтобы указать размер шрифта и поворот одновременно, попробуйте следующее:
plt.xticks(fontsize=14, rotation=90)
В качестве альтернативы, вы можете просто сделать:
import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size
plt.tick_params(axis='both', which='minor', labelsize=12)
ax.xaxis.set_tick_params(labelsize=20)
Еще одна альтернатива
У меня есть два графика рядом, и я хотел бы настроить метки отдельно.
Вышеуказанные решения были близки, но они не помогли мне. Я нашел свое решение на этой странице matplotlib .
ax.xaxis.set_tick_params(labelsize=20)
Это сделало свое дело и было прямо в точку. Для моего случая использования, это был график справа, который нужно было отрегулировать. Для графика слева, так как я создавал новые метки тиков, я смог настроить шрифт так же, как и при настройке меток.
т.е.
ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)
Таким образом, я использовал для правильного сюжета,
ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)
Небольшая тонкость ... Я знаю ... но я надеюсь, что это кому-то поможет :)
Бонусные баллы, если кто-нибудь знает, как настроить размер шрифта метки порядка величины.
Вы также можете изменить параметры отображения метки, например, размер шрифта, с помощью строки, подобной этой:
zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
Для меньшего шрифта я использую
ax1.set_xticklabels(xticklabels, fontsize=7)
и это работает!