2017-09-06 3 views
0

Warum erscheint die zweite Serie nicht immer, wie unten?Matplotlib gestapelt Balkendiagramm-Serie zeigt nicht


Szenario 1:

score_sim = (70, 80, 90) 
score_feat = (10, 20, 30) 
ind = np.arange(len(score_sim)) 
width = 0.35 

p1 = plt.bar(ind, score_feat, width) 
p2 = plt.bar(ind, score_sim, width) 

Gibt: enter image description here

p2 zeigt nicht?


Szenario 2:

score_sim = (70, 80, 90) 
score_feat = (100, 200, 300) 
ind = np.arange(len(score_sim)) 
width = 0.35 

p1 = plt.bar(ind, score_feat, width) 
p2 = plt.bar(ind, score_sim, width) 

Gibt: enter image description here



Also, warum ist nur die zweite Show zwei Serien? Ich möchte die blaue Serie unter der grünen haben. Wie mache ich das?

Antwort

1

In Szenario 1 sind die Balken des zweiten Diagramms größer als die Balken des ersten Diagramms. Daher überlagern sie die anderen Balken. In Szenario 2 sind die Balken des zweiten Diagramms kleiner als die des ersten Diagramms. Daher sind die Balken im Hintergrund immer noch sichtbar.

Beachten Sie, dass beide Diagramme keine "gestapelten" Balken anzeigen; Alle Balken beginnen bei y = 0.

Um eine bestimmte Handlung vor dem anderen die einfachste Lösung, gezeigt zu haben, ist auf Grundstück letzte ist, das heißt in Szenario 1

p2 = plt.bar(ind, score_sim, width) 
p1 = plt.bar(ind, score_feat, width) 

Other than that, Sie zorder ein Plot zu zeichnen verwenden kann vor dem anderen. Je höher die Zorder, desto weiter vorne liegt die Handlung.

p1 = plt.bar(ind, score_feat, width, zorder=4) 
p2 = plt.bar(ind, score_sim, width, zorder=3) 
# p1 will be shown in front of p2, even though it is later defined, 
# because it has the larger zorder 
+0

Oh, danke. Ich erkannte nicht, dass die Plots alle von Null beginnen und überlagert sind. – Mierzen

1

In Szenario 1 werden die Stäbe für score_feat richtig aufgetragen, aber dann werden sie von den Werten für score_sim bedeckt. plt.bar hat ein Argument bottom, das einen Skalar oder ein Array akzeptiert und den vertikalen Anfangspunkt eines Balkens angibt. z.B. Wenn Sie die Balken für die beiden Serien in Szenario 1 stapeln möchten, verwenden Sie als zweiten Plotbefehl:

Verwandte Themen