我試圖在一個子圖和另一個熱圖中製作一個簡單的子圖,同時保持方形軸。我嘗試以下方法:如何在matplotlib中使用熱圖製作方形子圖?
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()
這會產生以下:
,但問題是,軸不垂直,而彩條被認爲是第二次要情節的一部分。我希望它掛在劇情外面,並使之成爲樹狀圖框和熱圖框都是方形的並且彼此對齊(即相同的尺寸)。
我嘗試使用aspect='equal'
來獲取方形軸時調用subplot
如文檔建議,但是這破壞了劇情,讓這...
,如果我嘗試每一個插曲,而不是aspect='equal'
後使用plt.axis('equal')
,它奇怪的廣場熱圖,但不是它的邊框(見下文),同時完全破壞樹形圖,並搞亂了xtick標籤的對齊。 - 從而引發這個爛攤子:
這可怎麼固定?總結一下,我試圖繪製一些非常簡單的東西:頂部子圖中的方形樹狀圖,以及底部子圖中的方形熱圖,右邊的顏色條。沒有什麼花哨。
終於,更一般的問題:是否有一個通用規則/原則遵循強制matplotlib到總是使軸線方形?我不能想到一個我不想要方形軸的情況,但它通常不是默認行爲。如果可能的話,我想強制所有地塊平方。
感謝您的答案,但你的情節仍然不像常規小情節對齊。頂部和底部的邊界框未對齊。我希望它們能夠垂直對齊,並且顏色背向右側,有點像你擁有它,但沒有錯位。對此有何想法? – user248237dfsf 2012-08-10 01:55:33
我編輯了答案,請檢查它。 – HYRY 2012-08-10 03:03:20
感謝您的回答 - 這正是正確的輸出,但代碼看起來非常複雜!有更容易的方法嗎?似乎你必須成爲matplotlib開發人員之一才能知道如何寫這樣的東西,只是爲了讓顏色條排列起來... – user248237dfsf 2012-08-10 03:50:45