Kare eksenleri korurken bir alt grafikte bir dendrogram ve başka bir ısı haritası ile basit bir alt çizim yapmaya çalışıyorum.Matplotlib'de ısı haritalarıyla kare alt pikseller nasıl oluşturulur?
from scipy.cluster.hierarchy import linkage
from scipy.cluster.hierarchy import dendrogram
from scipy.spatial.distance import pdist
fig = plt.figure(figsize=(7,7))
plt.subplot(2, 1, 1)
cm = matplotlib.cm.Blues
X = np.random.random([5,5])
pmat = pdist(X, "euclidean")
linkmat = linkage(pmat)
dendrogram(linkmat)
plt.subplot(2, 1, 2)
labels = ["a", "b", "c", "d", "e", "f"]
Y = np.random.random([6,6])
plt.xticks(arange(0.5, 7.5, 1))
plt.gca().set_xticklabels(labels)
plt.pcolor(Y)
plt.colorbar()
bu şu sonuçları verir:
ama sorunlar eksenleri kare olmadığını, ve Colorbar ikinci subplot parçası olarak kabul edilir Ben aşağıdakileri deneyin. Bunun yerine, arsa dışında asmak ve dendrogram kutusu ve ısı haritası kutusunun hem kare hem de birbiriyle hizalanmış olmasını istiyorum (yani aynı boyutta.)
Kare eksenler elde etmek için aspect='equal'
kullanmayı denedim ...
yerine aspect='equal'
her subplot sonra plt.axis('equal')
kullanmaya çalışırsanız, bu garip kareler ısı haritası ancak sınırlayıcı kutusunu belgelerine anlaşılacağı gibi subplot
arayarak, ancak bu bu vererek arsa harap (aşağıya bakınız), dendrogramı tamamen yok ederken ve aynı zamanda xtick etiketlerinin hizalanmasını bozarken .... - Bu karmaşıklığa sebebiyet veren:
nasıl
bu düzeltilebilir? özetlemek gerekirse, çok basit bir şeyi çizmeye çalışıyorum: üstteki alt karedeki bir kare dendrogram ve sağ alt taraftaki renk çubuğuyla birlikte bir kare ısı haritası. hiçbir şey fantezi değil.Son olarak, daha genel soru: matplotlib'i her zaman eksenleri kare yapmak için zorlamak için genel bir kural/ilke var mıdır? Kare eksenleri istemediğim tek bir durumu düşünemiyorum ama genellikle varsayılan davranış değil. Mümkünse tüm arazileri meydanda zorlamak isterim.
Teşekkür ancak araziler hala düzenli subplots gibi düzenlenmez. Üst ve alt için sınırlayıcı kutular hizalanmamış. Onları sağa sarkan renkle dikey olarak hizalanmasını isterim, senin gibi, ama yanlış hizalanmış gibi. Bu konuda bir fikrin var mı? – user248237dfsf
Cevabı düzenledim, lütfen kontrol et. – HYRY
Cevabınız için teşekkürler - tam olarak doğru çıktı ama kod son derece karmaşık görünüyor! daha kolay bir yolu var mı matplotlib geliştiricilerinden biri gibi, böyle bir şeyi nasıl yazacağınızı bilmek zorundasınız gibi görünüyor, sadece bir renk çubuğu elde etmek için ... – user248237dfsf