Як на малюнку 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()
. (Чому це метод, я не маю підказки ... Матплотліб ненавидить властивості, мабуть!)
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)
і це працює!