Saya belajar menggunakan matplotlib
dengan mempelajari contoh-contoh, dan banyak contoh tampaknya menyertakan garis seperti berikut sebelum membuat plot tunggal ...
fig, ax = plt.subplots()
Berikut ini beberapa contoh ...
Saya melihat fungsi ini banyak digunakan, meskipun contohnya hanya berusaha membuat grafik tunggal. Apakah ada keuntungan lain? Demo resmi untuk subplots()
juga digunakan f, ax = subplots
saat membuat grafik tunggal, dan itu hanya referensi kapak setelah itu. Ini adalah kode yang mereka gunakan.
# Just a figure and one subplot
f, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
python
matplotlib
plot
visualization
neelshiv
sumber
sumber
Jawaban:
plt.subplots()
adalah fungsi yang mengembalikan tupel yang berisi gambar dan objek sumbu. Jadi saat menggunakanfig, ax = plt.subplots()
Anda membongkar tuple ini ke dalam variabelfig
danax
. Memilikifig
berguna jika Anda ingin mengubah atribut tingkat gambar atau menyimpan gambar sebagai file gambar nanti (misalnya denganfig.savefig('yourfilename.png')
). Anda tentu tidak harus menggunakan objek gambar yang dikembalikan tetapi banyak orang yang menggunakannya nanti jadi itu biasa dilihat. Juga, semua objek sumbu (objek yang memiliki metode merencanakan), tetap memiliki objek figur induk, dengan demikian:lebih ringkas dari ini:
sumber
ax11, ax12, ax21, ax22
menggunakanfig.add_subplot(221)
masing-masing (atau 222, 223, 224).Hanya suplemen di sini.
Pertanyaan berikut adalah bagaimana jika saya ingin lebih banyak subplot dalam gambar?
Seperti yang disebutkan dalam Doc, kita dapat menggunakan
fig = plt.subplots(nrows=2, ncols=2)
untuk mengatur sekelompok subplot dengan kisi (2,2) dalam satu objek gambar.Kemudian seperti yang kita ketahui,
fig, ax = plt.subplots()
mengembalikan tuple, mari kita cobafig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2)
dulu.Ini memunculkan kesalahan, tetapi tidak perlu khawatir, karena kita sekarang melihat bahwa
plt.subplots()
sebenarnya mengembalikan tupel dengan dua elemen. Yang pertama harus berupa objek gambar, dan yang lainnya harus berupa sekelompok objek subplot.Jadi mari kita coba ini lagi:
dan periksa jenisnya:
Tentu saja, jika Anda menggunakan parameter as (nrows = 1, ncols = 4), maka formatnya harus:
Jadi ingatlah untuk menjaga konstruksi daftar tetap sama dengan kisi-kisi subplot yang kita atur pada gambar.
Semoga ini bisa membantu Anda.
sumber
fig, axes = plt.subplots(nrows=10, ncols=3)
danaxes = axes.flatten()
. Sekarang Anda dapat merujuk ke masing-masing petak dengan indeks:axes[0]
,axes[1]
, ...nrows=1
, saat ituaxes
dikembalikan datar dengan panjang sama denganncols
fig, axes = plt.subplots(nrows=1, ncols=3, squeeze=False)
Sebagai tambahan untuk pertanyaan dan jawaban di atas ada juga perbedaan penting antara
plt.subplots()
danplt.subplot()
, perhatikan yang hilang's'
di akhir.Satu dapat digunakan
plt.subplots()
untuk membuat semua subplot mereka sekaligus dan mengembalikan gambar dan sumbu (jamak sumbu) dari subplot sebagai tuple. Sosok dapat dipahami sebagai kanvas tempat Anda melukis sketsa Anda.Sedangkan, Anda dapat menggunakan
plt.subplot()
jika Anda ingin menambahkan subplot secara terpisah. Hanya mengembalikan sumbu dari satu subplot.Namun,
plt.subplots()
lebih disukai karena memberi Anda pilihan lebih mudah untuk langsung menyesuaikan seluruh gambar Andasedangkan, dengan
plt.subplot()
, kita harus menentukan secara individual untuk setiap sumbu yang dapat menjadi rumit.sumber
ax3 = plt.subplot(2,1,3)
tidak akan berfungsi karena 2 per 1, yang hanya memiliki 2 grafik.Selain jawaban di atas, Anda dapat memeriksa jenis objek menggunakan
type(plt.subplots())
yang mengembalikan tuple, di sisi lain,type(plt.subplot())
mengembalikanmatplotlib.axes._subplots.AxesSubplot
yang Anda tidak bisa membongkar.sumber