2015-04-15 16 views
7

Ho creato un diagramma a barre con Pandas in cui mostro il cambio di quantità per alcuni paesi e ho impostato il colore della barra in base al continente di ciascun paese. Traccio il grafico usando il seguente codice. Il codice è basato sulla seconda risposta del this question:Legenda personalizzata nel grafico a barre di Pandas (matplotlib)

s = pd.Series(
    listOfQuantities, 
    listOfCountiesNames 
) 

''' Assign color to each country based on the continent ''' 
colormapping = {'AF':'k','AS':'r','EU':'g','OC':'r','NA':'b','SA':'y'} 
colorstring = "" 
for country in listOfCountiesNames: 
    continent = countryToContinent[country] 
    colorstring += colormapping[continent] 


pd.Series.plot(
    s, 
    kind='bar', 
    color=colorstring, 
    grid=False, 
) 

Voglio creare una leggenda come quella che vi mostro nell'immagine allegata (la leggenda non è stato generato da Python, ho aggiunto manualmente). È possibile disegnare tali leggende personalizzate con i panda o posso ottenere qualcosa di simile con altre librerie di grafici? Inoltre apprezzerei i suggerimenti per tipi di grafici alternativi per questo tipo di dati.

enter image description here

risposta

11

Così, dopo la tua trama della serie si potrebbe aggiungere questo

import matplotlib.patches as mpatches 
import matplotlib.pyplot as plt 

NA = mpatches.Patch(color='blue', label='North America') 
EU = mpatches.Patch(color='green', label='Europe') 
AP = mpatches.Patch(color='red', label='Asia/Pacific') 
SA = mpatches.Patch(color='yellow', label='South America') 
plt.legend(handles=[NA,EU,AP,SA], loc=2) 

plt.show() 
Problemi correlati