Saya tidak bisa mendapatkan colorbar pada grafik imshow seperti ini sama tingginya dengan grafik, singkatnya menggunakan Photoshop. Bagaimana cara mendapatkan ketinggian yang cocok?
python
image
matplotlib
Elliot
sumber
sumber
fraction
ataushrink
argumen.Jawaban:
Anda dapat melakukan ini dengan mudah dengan AxisDivider matplotlib .
Contoh dari halaman tertaut juga berfungsi tanpa menggunakan subplot:
sumber
plt.title
, itu akan ditampilkan ditukar ke kanan. Apakah ada cara untuk mengatasi ini?Kombinasi ini (dan nilai yang dekat dengan ini) tampaknya "ajaib" berfungsi bagi saya untuk menjaga colorbar diskalakan ke plot, tidak peduli berapa ukuran layar.
Ini juga tidak memerlukan berbagi sumbu yang dapat membuat plot keluar dari kotak.
sumber
im_ratio = data.shape[0]/data.shape[1]
plt.colorbar(im,fraction=0.046*im_ratio, pad=0.04)
manadata
gambar Anda.@ bogatron sudah memberikan jawaban yang disarankan oleh docs matplotlib , yang menghasilkan ketinggian yang tepat, tetapi memperkenalkan masalah yang berbeda. Sekarang lebar colorbar (dan juga ruang antara colorbar dan plot) berubah dengan lebar plot. Dengan kata lain, rasio aspek dari colorbar tidak diperbaiki lagi.
Untuk mendapatkan ketinggian yang tepat dan rasio aspek tertentu, Anda harus menggali lebih dalam
axes_grid1
modul misterius .Perhatikan bahwa ini menentukan lebar colorbar dengan ketinggian plot (berbeda dengan lebar gambar, seperti sebelumnya).
Jarak antara colorbar dan plot sekarang dapat ditentukan sebagai sebagian kecil dari lebar colorbar, yang merupakan angka yang jauh lebih bermakna dari pada sebagian kecil dari lebar gambar.
MEMPERBARUI:
Saya membuat notebook IPython pada topik , di mana saya mengemas kode di atas menjadi fungsi yang dapat digunakan kembali:
Dapat digunakan seperti ini:
sumber
Saya menghargai semua jawaban di atas. Namun, seperti beberapa jawaban dan komentar mencontohkan,
axes_grid1
modul tidak bisa GeoAxes alamat, sedangkan menyesuaikanfraction
,pad
,shrink
, dan parameter lain yang serupa dapat belum tentu memberikan perintah yang sangat tepat, yang benar-benar mengganggu saya. Saya percaya bahwa memberikancolorbar
sendiriaxes
mungkin merupakan solusi yang lebih baik untuk mengatasi semua masalah yang telah disebutkan.Kode
Hasil
Kemudian, saya menemukan
matplotlib.pyplot.colorbar
dokumentasi resmi juga memberikanax
opsi, yaitu sumbu yang ada yang akan memberikan ruang untuk colorbar. Karenanya, ini berguna untuk banyak subplot, lihat berikut.Kode
Hasil
Sekali lagi, Anda juga dapat mencapai efek yang sama dengan menentukan cax, cara yang lebih akurat dari sudut pandang saya.
Kode
Hasil
sumber
Saat Anda membuat
colorbar
coba gunakan fraksi dan / atau susutkan parameter.Dari dokumen:
sumber
colorbar()
fungsi atau metode.Semua solusi di atas baik, tapi saya suka @ Steve dan @ bejota yang terbaik karena mereka tidak melibatkan panggilan mewah dan bersifat universal.
Secara universal maksud saya yang bekerja dengan semua jenis sumbu termasuk
GeoAxes
. Misalnya, Anda telah memproyeksikan sumbu untuk pemetaan:panggilan ke
akan gagal dengan:
KeyException: map_projection
Oleh karena itu, satu-satunya cara universal menangani ukuran colorbar dengan semua jenis sumbu adalah:
Bekerja dengan pecahan dari 0,035 hingga 0,046 untuk mendapatkan ukuran terbaik Anda. Namun, nilai untuk fraksi dan paddig perlu disesuaikan untuk mendapatkan yang paling cocok untuk plot Anda dan akan berbeda tergantung jika orientasi bar warna berada di posisi vertikal atau horizontal.
sumber
shrink
parameter ketikafraction
bersama-sama denganpad
tidak menghasilkan hasil yang diinginkan.