2013-12-15 10 views
7

Sono nuovo di matplotlib e sto provando ad usarlo all'interno dei panda per tracciare alcuni grafici semplici. Ho un DataFrame che contiene due etichette "punteggio" e "persona", derivate da un altro DF.Semplice personalizzazione del grafico a barre matplotlib/panda (etichette, segni di spunta, ecc.)

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

Produrre questa uscita:

table output

Sto cercando di creare un semplice grafico a barre, per mostrare ogni persona di colore diverso, e questo è quello che ho finora:

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

bar chart

Come posso CUS ridimensionarlo in modo che il grafico mostri i nomi delle persone nell'asse x con colori unici e rimuova la "cornice" che circonda la figura? Come posso renderlo un grafico a barre orizzontale?

Grazie in anticipo per il vostro aiuto.

+4

voglio solo dire che mi piace la vostra abilità di disegno e pagherei soldi per pubblicare i miei grafici come quello – swyx

+2

@swyx: questi sono creati da matplot funzione di lib: * [grafici in stile xkcd] (http://matplotlib.org/xkcd/examples/showcase/xkcd.html) *, ispirato a sua volta da [questa domanda su Mathematica.SX] (https: // mathematica. stackexchange.com/questions/11350/xkcd-style-graphs). – ojdo

+0

@ojdo grazie! Volevo chiarire che qualche tempo fa –

risposta

9

Credo che questo vi darà l'idea:

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') 

per

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 

otterrete:

hbar

+0

Grazie. Come classificherai l'ordine e mostrerai i valori per ogni barra? (cioè 1,79 per AAA nella prima posizione dall'alto verso il basso, DDD in seconda posizione, ecc.?). –

+0

@LuisMiguel puoi usare 'ax.text (x, y, string)' per aggiungere del testo extra alla trama in posizione (x, y). l'ordine è lo stesso della serie/data frame –

+2

@LuisMiguel questo potrebbe aiutare: http://stackoverflow.com/questions/19917587/matplotlib-advanced-bar-plot/19919397#19919397 –

Problemi correlati