Soru Matplotlib dağılım grafiğinde logaritmik bir colorbar


Dağılım grafiğindeki noktaların renklerini boşluk fraksiyonunun değerine karşılık getirmek istiyorum, fakat farklılıkları yükseltmek için logaritmik ölçekte. Bunu yaptım, ama şimdi plt.colorbar () yaptığımda, gerçek boşluk kısmını gerçekten istediğimde boşluk kesirinin günlüğünü görüntüler. Renk çubuğunda, [0.00001,1] 'e ait boşluk fraksiyonunun uygun etiketleri ile bir günlük ölçeği nasıl yapabilirim?

İşte şimdi sahip olduğum arsa görüntüsünü, ancak boşluk fraksiyonu colorbar, logun yerine gerçek boşluk kısmına karşılık gelecek şekilde etiketlenmiyor.

current plot

fig = plt.figure()
plt.scatter(x,y,edgecolors='none',s=marker_size,c=np.log(void_fraction))
plt.colorbar()
plt.title('Colorbar: void fraction')

Yardım ettiğin için teşekkür ederim.


41
2018-06-19 20:56


Menşei




Cevaplar:


Artık belgelerin açıklandığı bir bölüm var renk eşleme ve normalleştirme nasıl çalışır (Bu, geliştirme belgelerine bir bağlantıdır, ancak mpl'nin tüm sürümleri için geçerlidir. "Yakında" ana hat belgelerinde olacaktır.)

Yolu matplotlib renk eşleştirmesi iki adımda yapılır, önce Normalize işlevi (alt sınıflar tarafından sarılmış matplotlib.colors.Normalize) elinize verdiğiniz verileri eşler [0, 1]. İkinci adımda değerler haritalanır. [0,1] -> RGBA alanı.

Sadece kullanmanız gerekir LogNorm normalizasyon sınıfı, norm kwarg.

plt.scatter(x,y,edgecolors='none',s=marker_size,c=void_fraction,
                norm=matplotlib.colors.LogNorm())

Çizim yapmak için verileri ölçeklemek / değiştirmek istediğinizde, izin vermek daha iyidir. matplotlib dönüştürmeleri kendiniz yapmaktan ziyade yapın.


55
2018-06-19 22:06



Mükemmel, teşekkür ederim! - Cokes
Sonuç, Şekil 2'de. pubs.rsc.org/en/content/articlehtml/2014/cp/c3cp55039g Kabullerde Stack Overflow ekledim! - Cokes
Teşekkür ederim! Sadece dokümanlar nereye bakılacağını ima ettiler. Fantastik parametreler ile fantastik parametreler sunan bu fantastik fonksiyonlar var ama bunların nasıl kullanılacağı konusunda hiçbir şey yok. - EndsOfInvention
Lütfen şimdi anladığınız bilgilere dayalı olarak dokümanlar için düzenlemeler yapmanızı öneririz - tacaswell