2016-03-22 6 views
1

Ich versuche, matplotlib (genauer gesagt die Plot-Methode von Pandas) zu verwenden, um zwei Diagramme nebeneinander in einem Ipython-Notebook mit einem dritten Diagramm überlagernd zu plotten das zweite Diagramm und mit einer sekundären Y-Achse. Allerdings konnte ich das Overlay nicht zur Arbeit bringen.Matplotlib zwei Diagramme nebeneinander mit dritten über dem zweiten Diagramm

Derzeit ist mein Code:

import matplotlib.pyplot as plt 
%matplotlib inline 

fig, axs = plt.subplots(1,2) 
fig.set_size_inches(12, 4) 

top10.plot(kind='barh', ax=axs[0]) 
top10_time_trend.T.plot(kind='bar', stacked=True, legend=False, ax=axs[1]) 
time_trend.plot(kind='line', ax=axs[1], ylim=0, secondary_y=True) 

ich die Side-by-Side-Struktur erhalten die ich suche, aber nur die erste (Top10) und letzten (time_trend) Plots sind sichtbar. Meine Ausgabe ist unten:

enter image description here

Wenn sie getrennt das nicht gezeigte Grundstück (top10_time_trend) aufgetragen sieht aus wie dieser

enter image description here

Was ich versuche, etwas zu tun ist, die so aussieht, dh der Liniendiagramm überlagert den gestapelten Balken.

enter image description here

Antwort

1

Die beste Methode, dies zu tun ist, um eine dritte Achse zu schaffen sagen:

ax3 = ax[1].twinx() 

und dann

top10_time_trend.T.plot(kind='bar', stacked=True, legend=False, ax=ax3) 

Bitte lassen Sie mich wissen, ob dies für Sie arbeitet.

Hier können Sie ein Beispiel für die Verwendung von TwinX finden() von matplotlib docs http://matplotlib.org/examples/api/two_scales.html

+0

Leider hat ein Fehler oben war. Bitte stellen Sie sicher, dass Sie die aktualisierte Antwort versuchen. –

+0

Danke für die Antwort Francisco! Leider funktioniert es immer noch nicht. Twinx scheint das zu sein, was ich brauche, und ich kann zwei Diagramme erfolgreich überlagern, wenn ich sie direkt mit Matplotlib mache. Es scheint jedoch nicht zu funktionieren, wenn die Charts durch Pandas erstellt werden. Jetzt, wo ich meinen Versuch kritischer sehe, bemerke ich, dass ich die zwei Achsen bekomme, die ich erwarten würde. Es ist fast so, als ob der Hintergrund der einen Grafik die Sichtbarkeit für die andere blockiert. – Chris

Verwandte Themen