Python xticks di subplot

Jika saya plot tunggal imshow plot yang bisa saya gunakan

fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24],  [5, 15, 25] )

untuk menggantikan saya xtick label.

Sekarang, saya merencanakan 12 imshow plot menggunakan

f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)

Bagaimana saya bisa mengubah saya xticks hanya untuk salah satu subplot? Aku hanya dapat mengakses sumbu subplot dengan axarr[i, j]. Bagaimana saya dapat mengakses plt hanya untuk satu tertentu subplot?

Larutan

Ada dua cara:

  1. Gunakan sumbu metode petak objek (misalnya ax.set_xticks dan ax.set_xticklabels) atau
  2. Gunakan plt.sca untuk mengatur arus sumbu untuk pyplot state machine (yaitu plt interface).

Sebagai contoh (ini juga menggambarkan menggunakan setp untuk mengubah sifat dari semua subplot):

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()

Komentar (1)

Melihat (cukup) baru-baru ini jawaban pada matplotlib repositori, di mana solusi berikut ini disarankan:

  • Jika anda ingin mengatur xticklabels:

ax.set_xticks([1,4,5]) ax.set_xticklabels([1,4,5], fontsize=12)

  • Jika anda hanya ingin meningkatkan fontsize dari xticklabels, menggunakan nilai default dan lokasi (yang merupakan sesuatu yang saya pribadi sering perlu dan menemukan sangat berguna):

ax.tick_params(axis="x", labelsize=12)

  • Untuk melakukan itu semua sekaligus:

plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold", horizontalalignment="kiri")`

Komentar (0)

Sepertinya di versi Matplotlib, yang set_yticks dan set_xticks fungsi dihapus. Apa yang saya lakukan, bukan mengatur ukuran x,y kutu, aku hanya berubah ukuran angka.

plt.figure(1, dpi=200, figsize=(20,20))

Aku tahu itu's agak anti-intuitif, tetapi yang's apa yang bekerja untuk saya... Biarkan aku tahu jika ada metode yang lebih baik untuk memecahkan masalah ini dalam versi Matplotlib. Terima kasih

Komentar (0)