Python xticks в подзаголовках
Если я рисую один график imshow
, я могу использовать
fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24], [5, 15, 25] )
для замены ярлыков xtick.
Теперь я рисую 12 imshow
графиков, используя
f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)
Как я могу изменить свои xticks только для одной из этих подзаговоров? Я могу получить доступ только к осям подзаголовков с помощью axarr[i, j]
. Как я могу получить доступ к plt
только для одного конкретного подзаголовка?
Ответы
Ответ 1
Существует два способа:
- Используйте методы осей объекта subplot (например,
ax.set_xticks
и ax.set_xticklabels
) или
- Используйте
plt.sca
для установки текущих осей для конечного автомата (например, интерфейса plt
).
В качестве примера (это также иллюстрирует использование setp
для изменения свойств всех подзаговоров):
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=3, ncols=4)
# Set the ticks and ticklabels for all axes
plt.setp(axes, xticks=[0.1, 0.5, 0.9], xticklabels=['a', 'b', 'c'],
yticks=[1, 2, 3])
# Use the pyplot interface to change just one subplot...
plt.sca(axes[1, 1])
plt.xticks(range(3), ['A', 'Big', 'Cat'], color='red')
fig.tight_layout()
plt.show()
![enter image description here]()
Ответ 2
Смотрите (довольно) недавний ответ на репозиторий matplotlib, в котором предлагается следующее решение:
-
Если вы хотите установить xticklabels:
ax.set_xticks([1,4,5])
ax.set_xticklabels([1,4,5], fontsize=12)
-
Если вы хотите только увеличить размер шрифта xticklabels, используя значения по умолчанию и местоположения (это то, что мне лично часто нужно и очень удобно):
ax.tick_params(axis="x", labelsize=12)
-
Чтобы сделать все это сразу:
plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold",
horizontalalignment="left")'
Ответ 3
Похоже, что в более поздней версии Matplotlib функции set_yticks
и set_xticks
удалены. Что я сделал, вместо того, чтобы установить размер x, y тиков, я просто изменил размер фигуры.
plt.figure(1, dpi=200, figsize=(20,20))
Я знаю, что это немного антиинтуитивно, но это то, что сработало для меня... Дайте мне знать, если есть лучшие методы для решения этой проблемы в более поздних версиях Matplotlib. Спасибо