Python xticks в підпрограмах


84

Якщо я будую окремий 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лише до одного конкретного підзаговора?

Відповіді:


164

Є два шляхи:

  1. Використовуйте методи осей об'єкта додаткової графіки (наприклад, ax.set_xticksта ax.set_xticklabels) або
  2. Використовуйте 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()

введіть тут опис зображення


Яку версію ви використовуєте? Я отримую AttributeError: Unknown property xtickslabelsзаplt.setp(ax, xtickslabels=xticks)
Frederick Nord

20

Дивіться (доволі) останню відповідь на сховище 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")`
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.