2016-11-15 5 views
1

meine Datenrahmen wie folgt aussehen:mehrere gestapelte Balkendiagramme auf einem Panel (matplotlib)

time Country Share1 Share2 Share3 Share4 
1990 A  10  30  50  10 
1991 A  20  70  5  5 
1992 A  15  15  50  20 
1990 B  40  10  15  35 
1991 B  70  10  10  10 

im Wesentlichen, würde Ich mag für jedes Land im Laufe der Zeit gestapeltes Balkendiagramme erstellen.

ein Code wie:

for values in df.country: 
    values.bar(share*, over=year, stacked=True) 

... der Code wird nicht funktionieren, aber das ist der Kern dessen, was ich tun möchte. Ich möchte jedes Land (weil ich 200 Länder habe) überbrücken, anstatt sie einzeln einzugeben. Vielen Dank! :-)

Antwort

1

Dies ist nicht zu schlecht zu erreichen, sobald Sie verstehen, was die Plotmethoden Sie von einem DataFrame Objekt für die Achsen und Daten verwenden können. Die X-Achse ist der Index des Datenrahmens und jede Spalte repräsentiert eine Reihe (jede Reihe hat einen Wert pro X-Wert). Angenommen, Ihre Datenrahmen df aufgerufen:

# set the values for the x-axis that we want to plot, 
# in this case the time values in years 
df.set_index(['time'], inplace=True) 

# iterate through the list of countries, and create a plot 
for country in df.Country.unique(): 
    # .plot.bar makes bar charts 
    ax = df[df.Country==country].plot.bar(stacked=True) 
    # make room for the legend, and sets in the upper right corner 
    ax.set_xlim(ax.get_xlim()[0],ax.get_xlim()[1]+1) 
    ax.legend(loc='upper right') 
    # add the country name to the top of the chart. 
    ax.set_title(country) 

können Sie speichern die Bilddatei auf jeder Iteration.

enter image description here

+0

dies funktionierte perfekt, danke. Ich habe ein paar Zeilen Code hinzugefügt: 'ax.legend_.remove()', um die Legende zu entfernen. 'plt.savefig (Land + '. Png')' um die Ländernamen zu speichern. und 'plt.close ('all')', um Plots zu schließen, weil es Speicher belegt – Carla

Verwandte Themen