2016-05-11 55 views
2

我試圖用我的DataFrame中的所有觀察值生成條形圖,如下所示:Dataframe(rows = years,columns = objects,values = violation in object in年)使用seaborn barplot繪製寬幅數據框

我使用的是默認的大熊貓plot時獲得正確類型的圖表:

cluster_yearly_results_df.plot.bar() 

Correct Bar Plot

不過,我想用seaborn,一d我有麻煩輸入寬形式dataframes,使用:

sns.barplot(data=cluster_yearly_results_df) 

我可以用什麼我想要做的seaborn?

+0

如果你想要嵌套酒吧,你需要重新格式化爲長形式。但如果內置的熊貓陰謀做你想要的,我會堅持。 – mwaskom

回答

4

seaborn.barplot文檔說:

柱狀圖表示用於與各矩形的高度的數值變量集中趨勢的估計,並提供圍繞使用誤差棒該估計的不確定性的一些指示。

換句話說,目的是表示用於與單個欄表示mean,誤差棒爲std一個變量的多個值。您正在尋找像pandas.plot.bar()那樣用條代表各個值。

話雖如此,您可以調整您的DataFrame如下以匹配seaborn接口。用DataFrame到你類似的開始:

df = pd.DataFrame(np.random.randint(low=0, high=10, size=(10, 3)), columns=list('ABC')) 

    A B C 
0 7 6 4 
1 3 5 9 
2 3 0 5 
3 0 1 3 
4 9 7 7 

使用.stack().reset_index()創建兩列,在y唯一識別每個值:

df = df.stack().reset_index() 
df.columns = ['x', 'hue', 'y'] 

這將產生:

x hue y 
0 0 A 6 
1 0 B 1 
2 0 C 2 
3 1 A 5 
4 1 B 7 

然後陰謀:

sns.barplot(y='y', x='x', hue='hue', data=df) 

enter image description here

+0

我希望這有助於畢竟? – Stefan

+0

這非常有幫助,非常感謝!我投票贊成,但是由於我是新人,所以選票並沒有顯示出來,而且我在規則中讀到了評論說應該避免謝謝你。但這正是我所期待的!對不起,真的很晚回覆,剛纔看到這個評論 –

+0

不用擔心。您應該能夠接受答案,這會給您更多的代表並將問題標記爲已關閉,否則問題仍然顯示爲未答覆。 – Stefan