2017-01-04 12 views
0

Ich versuche, Arbeit in einer Excel-Pivot-Tabelle zu replizieren. Ich habe 3 Variablen (Leerlaufzeit, Gesamtzeit und Kunde). Ich möchte ein Balkendiagramm erstellen, das gestapelt ist (überlappt), aber keine Summe aller Variablen ist.Gestapeltes Balkendiagramm in Pandas mit Maximalwerten anstatt summiert zu werden

Zum Beispiel: Wenn ..

Total_time = 10 
Idle_time = 3 

Ich mag das Balkendiagramm den maximalen Wert der Leerlaufzeit und die Gesamtzeit für jeden Kunden zu zeigen.

Wenn ich bisher versuche, stacked = True zu verwenden, stapelt es insgesamt & Leerlaufzeit und erstellt ein Balkendiagramm mit einem maximalen Wert von 10 + 3 = 13. Ich möchte zwei separate Bars einander überlappen, wo eine Bar bei 10 maxes und die andere am 3.

data = df.pivot_table(df,index=['Customer'], aggfunc=np.sum) 
ax = data[['Total time [hours]', 'Idle time [hours]']].plot.bar(stacked=True) 
ax.set_ylabel("Miles") 
ax.set_title("Total Miles Per Customer") 

plt.show() 

ich einen Screenshot der Excel-Version hochgeladen haben, und Pandas Version zur weiteren Erläuterung.

Excel Image

Pandas Image

Vielen Dank im Voraus.


UPDATE: Ted mit der folgenden Lösung.

Antwort

2

Eine einfache Lösung ist es, sie mit der Leerlaufzeit separat plotten letzten

df['Total time [hours]'].plot.bar(color='r') 
df['Idle time [hours]'].plot.bar(color='b') 

Eine andere Lösung ist eine neue Spalte zu erstellen, die auf die Gesamtzeit minus der Leerlaufzeit gleich ist und dann ein gestapeltes Balkendiagramm tun . Sie können die Spalten von dort umbenennen

df['Extra_Time'] = df['Total time [hours]'] - df['Idle time [hours]'] 
data[['Idle time [hours]', 'Extra_Time']].plot.bar(stacked=True) 
+0

Dank Ted, meine 6 Stunden Frustration kommt zu einem Ende dank Ihrer einfachen Lösung des Plottens sie separat! – Tappy

Verwandte Themen