wie machen quadratischen subplots in matplotlib mit heatmaps?

Ich versuche eine einfache Nebenhandlung mit ein das dendrogramm in einer Nebenhandlung und eine heat map, die in einem anderen, unter Beibehaltung Platz Achsen. Ich versuche Folgendes:

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()

daraus ergibt sich die folgende:

wie machen quadratischen subplots in matplotlib mit heatmaps?

aber die Probleme sind, dass die Achsen sind nicht quadratisch, und die Farbskala ist als Teil des zweiten Nebenhandlung. Ich möchte ihn stattdessen zu hängen außerhalb des plot, und machen es so den das dendrogramm box und die heatmap-box sind die beiden quadratischen und zueinander ausgerichtet (D. H. gleiche Größe.)

Versuchte ich mit aspect='equal' um Platz Achsen beim Aufruf subplot als die Dokumentation vermuten lässt, aber das ruiniert den plot, so dass diese...

wie machen quadratischen subplots in matplotlib mit heatmaps?

wenn ich versuche, mit plt.axis('equal') nach jeder Nebenhandlung statt aspect='equal' es seltsam Quadrate der heatmap aber nicht seine bounding-box (siehe unten), während die Zerstörung der das dendrogramm insgesamt und auch vermasselt die Ausrichtung des xtick Etiketten.... - der Anlass zu diesem Durcheinander:

wie machen quadratischen subplots in matplotlib mit heatmaps?

wie kann dies behoben werden? um es zusammenzufassen, ich versuche, die Handlung etwas sehr einfaches: ein Quadrat, das dendrogramm in der oberen Teilfläche, und ein Quadrat heatmap im unteren Nebenhandlung, mit der Farb-Balken auf der rechten Seite. nichts besonderes.

schließlich, mehr Allgemeine Frage: gibt es eine Regel /Prinzip zu Folgen, um Kraft matplotlib zu immer machen-Achsen-Platz? Ich kann mir nicht vorstellen, einen einzigen Fall, wo ich nicht wollen, quadratische Achsen, aber es ist in der Regel nicht das Standard-Verhalten. Ich möchte erzwingen, dass alle Grundstücke rechteckig sein, wenn möglich.

InformationsquelleAutor user248237dfsf | 2012-08-09

Schreibe einen Kommentar