2013-12-15 126 views
7

我是matplotlib的新手,我嘗試在熊貓內部使用它來繪製一些簡單的圖表。我有一個DataFrame包含兩個標籤「score」和「person」,派生自另一個DF。簡單定製matplotlib /熊貓條形圖(標籤,刻度等)

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

生產這種輸出:

table output

我試圖創建一個簡單的條形圖,顯示每個人在不同的色彩,這是我迄今:

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

bar chart

我怎麼能CUS對它進行測量,以便圖表以獨特的顏色顯示x軸上的人物名稱,並去除圖形周圍的「框架」?我怎樣才能使它成爲一個水平條形圖?

在此先感謝您的幫助。

+4

我只想說我愛你的繪畫技巧並會付出錢來輸出我的圖表 – swyx

+2

@swyx:這些是由matplot創建的lib功能:* [xkcd-style plot](http://matplotlib.org/xkcd/examples/showcase/xkcd.html)*,由[Mathematica.SX上的這個問題](https:// mathematica。 stackexchange.com/questions/11350/xkcd-style-graphs)。 – ojdo

+0

@ojdo謝謝!我想澄清一下,前一陣子 –

回答

9

我想這會給你的想法:

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

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 

您將獲得:

hbar

+0

謝謝。您如何排列訂單並顯示每個欄的值? (即從頂部到底部的第一個位置的AAA爲1.79,第二個位置的DDD爲?)。 –

+0

@LuisMiguel你可以使用'ax.text(x,y,string)'在位置(x,y)的圖上添加額外的文本。順序是一樣的在系列/數據框 –

+2

@LuisMiguel這可能有所幫助:http://stackoverflow.com/questions/19917587/matplotlib-advanced-bar-plot/19919397#19919397 –