Sangat mirip dengan pertanyaan ini tetapi dengan perbedaan bahwa figur saya dapat sebesar yang diperlukan.
Saya perlu membuat sejumlah plot yang ditumpuk secara vertikal di matplotlib. Hasilnya akan disimpan menggunakan figsave dan dilihat di halaman web, jadi saya tidak peduli seberapa tinggi gambar akhir selama subplot ditempatkan sehingga mereka tidak tumpang tindih.
Tidak peduli seberapa besar angka yang saya izinkan, subplot sepertinya selalu tumpang tindih.
Kode saya saat ini terlihat seperti
import matplotlib.pyplot as plt
import my_other_module
titles, x_lists, y_lists = my_other_module.get_data()
fig = plt.figure(figsize=(10,60))
for i, y_list in enumerate(y_lists):
plt.subplot(len(titles), 1, i)
plt.xlabel("Some X label")
plt.ylabel("Some Y label")
plt.title(titles[i])
plt.plot(x_lists[i],y_list)
fig.savefig('out.png', dpi=100)
python
matplotlib
mcstrother
sumber
sumber
tight_layout()
terkena dan rindu. Saya sudah mencoba untuk memahami apa yang berbeda ketika itu tidak berpengaruh (margin antar-plot besar tetap) - yang seringsuptitle
) dengan judul subplot saya. Jika ada yang mengalami masalah serupa, inilah yang membantu dalam kasus saya stackoverflow.com/a/45161551/11740420 . Yakni,rect
parametertight_layout()
Anda dapat menggunakan
plt.subplots_adjust
untuk mengubah jarak antara subplot (sumber)tanda tangan panggilan:
Arti parameter (dan standar yang disarankan) adalah:
Default aktual dikendalikan oleh file rc
sumber
Saya menemukan bahwa subplots_adjust (hspace = 0.001) yang akhirnya berhasil bagi saya. Ketika saya menggunakan spasi = Tidak ada, masih ada ruang putih di antara setiap plot. Mengaturnya ke sesuatu yang sangat mendekati nol namun tampaknya memaksa mereka untuk berbaris. Apa yang saya unggah di sini bukan bagian kode yang paling elegan, tetapi Anda dapat melihat cara kerja hspace.
sumber
The plt.subplots_adjust Metode:
atau
Ukuran gambar itu penting.
"Saya sudah mencoba mengotak-atik hspace, tetapi meningkatkannya sepertinya membuat semua grafik lebih kecil tanpa menyelesaikan masalah yang tumpang tindih."
Dengan demikian untuk membuat lebih banyak ruang putih dan menjaga ukuran sub plot total gambar harus lebih besar.
sumber
plt.figure(figsize=(10, 7))
, ukuran gambar akan menjadi2000 x 1400
pixAnda dapat mencoba subplot_tool ()
sumber
Mirip dengan
tight_layout
matplotlib sekarang (pada versi 2.2) menyediakanconstrained_layout
. Berbeda dengantight_layout
, yang dapat dipanggil kapan saja dalam kode untuk tata letak tunggal yang dioptimalkan,constrained_layout
adalah properti, yang mungkin aktif dan akan mengoptimalkan tata letak sebelum setiap langkah menggambar.Oleh karena itu perlu diaktifkan sebelum atau selama pembuatan subplot, seperti
figure(constrained_layout=True)
atausubplots(constrained_layout=True)
.Contoh:
constrained_layout mungkin juga diatur melalui
rcParams
Lihat entri apa yang baru dan Panduan Tata Letak yang Dibatasi
sumber
tight_layout
tidak dapat diandalkantight_layout()
bekerja lebih baikcontrained_layout
lebih lambat, karena seperti yang terlihat dalam jawaban ini, ini mengoptimalkan tata letak sebelum setiap langkah menggambar .