Masalahnya adalah penggunaan aspect='equal'
, yang mencegah subplot meregang ke rasio aspek arbitrer dan mengisi semua ruang kosong.
Biasanya, ini akan berhasil:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
plt.subplots_adjust(wspace=0, hspace=0)
Hasilnya begini:
Namun, dengan aspect='equal'
, seperti pada kode berikut:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
plt.subplots_adjust(wspace=0, hspace=0)
Inilah yang kami dapatkan:
Perbedaan dalam kasus kedua ini adalah Anda memaksa sumbu x dan y memiliki jumlah unit / piksel yang sama. Karena sumbu berubah dari 0 ke 1 secara default (yaitu, sebelum Anda memplot apapun), menggunakan aspect='equal'
gaya setiap sumbu menjadi persegi. Karena gambar tersebut bukan persegi, pyplot menambahkan spasi ekstra antara sumbu secara horizontal.
Untuk mengatasi masalah ini, Anda dapat mengatur gambar Anda agar memiliki rasio aspek yang benar. Kami akan menggunakan antarmuka pyplot berorientasi objek di sini, yang saya anggap lebih unggul secara umum:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8)) # Notice the equal aspect ratio
ax = [fig.add_subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
fig.subplots_adjust(wspace=0, hspace=0)
Inilah hasilnya:
None
tidak melakukan apa yang Anda pikirkan, itu berarti 'gunakan default'.