2013-12-15 17 views
7

Ich bin neu zu Matplotlib und ich versuche, es in Pandas zu verwenden, um einige einfache Diagramme zu plotten. Ich habe einen DataFrame, der zwei Labels "score" und "person" enthält, abgeleitet von einem anderen DF.Einfache Anpassung von Matplotlib/Pandas Balkendiagramm (Etiketten, Ticks, etc.)

df1 = DataFrame(df, columns=['score','person']) 

Herstellung dieser Ausgabe:

table output

ich ein einfaches Balkendiagramm zu erstellen Ich versuche, jede Person in einer anderen Farbe zu zeigen, und das ist, was ich habe bisher:

df1.plot(kind='bar', title='Ranking') 

bar chart

Wie kann ich Cus tomize es so das Diagramm zeigt die Personennamen in der x-Achse mit eindeutigen Farben und entfernen Sie den "Rahmen" um die Figur? Wie kann ich ein horizontales Balkendiagramm erstellen?

Vielen Dank im Voraus für Ihre Hilfe.

+4

Ich möchte nur sagen, dass ich Ihre Zeichnung Fähigkeit lieben und würde Geld zahlen, um meine Charts so auszugeben – swyx

+2

@swyx: Diese werden von Matplot erstellt lib feature: * [xkcd-style plots] (http://matplotlib.org/xkcd/examples/showcase/xkcd.html) *, inspiriert wiederum von [diese Frage zu Mathematica.SX] (https: // mathematica. stackexchange.com/questions/11350/xkcd-style-graphs). – ojdo

+0

@ojdo danke! Ich wollte das vor einer Weile klären –

Antwort

9

ich denke, dies wird Ihnen die Idee:

df = pd.DataFrame({'score':np.random.randn(6), 
        'person':[x*3 for x in list('ABCDEF')]}) 

ax = plt.subplot(111) 
df.score.plot(ax=ax, kind='barh', color=list('rgbkym'), title='ranking') 
ax.axis('off') 
for i, x in enumerate(df.person): 
    ax.text(0, i + .5, x, ha='right', fontsize='large') 

für

person score 
0 AAA 1.79 
1 BBB 0.31 
2 CCC -0.52 
3 DDD 1.59 
4 EEE 0.59 
5 FFF -1.03 

Sie erhalten:

hbar

+0

Danke. Wie würden Sie die Reihenfolge ordnen und die Werte für jeden Balken anzeigen? (d. h. 1,79 für AAA in der ersten Position von oben nach unten, DDD in der zweiten Position usw.?). –

+0

@LuisMiguel können Sie 'ax.text (x, y, string)' 'verwenden, um der Position an der Position (x, y) zusätzlichen Text hinzuzufügen. die Reihenfolge ist die gleiche wie in der Serie/Datenrahmen –

+2

@LuisMiguel könnte dies helfen: http://StackOverflow.com/Questions/19917587/matplotlib-advanced-bar-plot/19919397#19919397 –

Verwandte Themen