Jawaban dari las3rjock , yang entah bagaimana merupakan jawaban yang diterima oleh OP, salah - kode tidak berjalan, juga bukan sintaks matplotlib yang valid; jawaban itu tidak memberikan kode yang dapat dijalankan dan tidak memiliki informasi atau saran yang mungkin berguna bagi OP dalam menulis kode mereka sendiri untuk menyelesaikan masalah di OP.
Mengingat bahwa itu adalah jawaban yang diterima dan telah menerima beberapa suara positif, saya kira sedikit dekonstruksi sudah beres.
Pertama, memanggil subplot tidak tidak memberikan beberapa plot; subplot dipanggil untuk membuat plot tunggal, sekaligus membuat banyak plot. Selain itu, "mengubah plt.figure (i)" tidak benar.
plt.figure () (di mana plt atau PLT biasanya pustaka pyplot matplotlib diimpor dan dipantulkan sebagai variabel global, plt atau kadang-kadang PLT, seperti:
from matplotlib import pyplot as PLT
fig = PLT.figure()
baris tepat di atas membuat instance gambar matplotlib; ini objek add_subplot metode kemudian disebut untuk setiap jendela plotting (informal memikirkan x & y sumbu yang terdiri subplot tunggal). Anda membuat (apakah hanya satu atau beberapa di halaman), seperti itu
fig.add_subplot(111)
sintaks ini setara dengan
fig.add_subplot(1,1,1)
pilih salah satu yang masuk akal bagi Anda.
Di bawah ini saya telah membuat daftar kode untuk memplot dua plot pada satu halaman, satu di atas yang lain. Pemformatan dilakukan melalui argumen yang diteruskan ke add_subplot . Perhatikan argumennya adalah ( 211 ) untuk plot pertama dan ( 212 ) untuk plot kedua.
from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(211)
ax1.plot([(1, 2), (3, 4)], [(4, 3), (2, 3)])
ax2 = fig.add_subplot(212)
ax2.plot([(7, 2), (5, 3)], [(1, 6), (9, 5)])
PLT.show()
Masing-masing dari dua argumen ini adalah spesifikasi lengkap untuk menempatkan jendela plot masing-masing dengan benar pada halaman.
211 (yang juga dapat ditulis dalam bentuk 3-tupel karena (2,1,1) berarti dua baris dan satu kolom jendela plot; digit ketiga menentukan urutan jendela subplot tertentu relatif terhadap jendela subplot lainnya- -dalam hal ini, ini adalah plot pertama (yang menempatkannya pada baris 1) maka plot nomor 1, baris 1 col 1.
Argumen yang diteruskan ke panggilan kedua ke add_subplot , berbeda dari yang pertama hanya dengan digit di belakangnya (a 2 bukan 1, karena plot ini adalah plot kedua (baris 2, kolom 1).
Contoh dengan lebih banyak plot: jika sebaliknya Anda menginginkan empat plot pada halaman, dalam konfigurasi matriks 2x2, Anda akan memanggil metode add_subplot empat kali, meneruskan empat argumen ini (221), (222), (223), dan ( 224), untuk membuat empat plot pada halaman pada pukul 10, 2, 8, dan 4, masing-masing dan dalam urutan ini.
Perhatikan bahwa masing-masing dari empat argumen berisi dua lead 2 - yang mengkodekan konfigurasi 2 x 2, yaitu dua baris dan dua kolom.
Digit ketiga (paling kanan) di masing-masing dari empat argumen mengkodekan urutan jendela plot tertentu dalam matriks 2 x 2 - yaitu, baris 1 kolom 1 (1), baris 1 kolom 2 (2), baris 2 col 1 (3), baris 2 col 2 (4).
fig.add_axes(rect)
sebagai penggantiadd_subplot
?PLT
? Belum pernah terlihat itu digunakan sebelumnyafor i in range(16): plt.subplot(4, 4, i+1)
dan mengamati tidak ada kesalahan sintaks. Jawabannya diterima karena mungkin melakukan apa yang diinginkan OP.Karena pertanyaan ini dari 4 tahun yang lalu, hal-hal baru telah diterapkan dan di antaranya ada fungsi baru
plt.subplots
yang sangat nyaman :fig, axes = plot.subplots(nrows=2, ncols=3, sharex=True, sharey=True)
di mana
axes
adalah salahnumpy.ndarray
satu objek AxesSubplot, membuatnya sangat nyaman untuk menelusuri subplot yang berbeda hanya dengan menggunakan indeks larik[i,j]
.sumber
Ini juga berfungsi:
for i in range(19): plt.subplot(5,4,i+1)
Ini memplot 19 grafik total pada satu halaman. Formatnya adalah 5 kebawah dan 4 melintang ..
sumber
Jawaban @doug & FS.adalah solusi yang sangat bagus. Saya ingin berbagi solusi untuk iterasi pada pandas.dataframe.
import pandas as pd df=pd.DataFrame([[1, 2], [3, 4], [4, 3], [2, 3]]) fig = plt.figure(figsize=(14,8)) for i in df.columns: ax=plt.subplot(2,1,i+1) df[[i]].plot(ax=ax) print(i) plt.show()
sumber
for i,col in enumerate(df.columns):