簡體   English   中英

pandas,matplotlib,繪制堆疊條形圖

[英]pandas, matplotlib, drawing a stacked bar chart

我有一個這樣的數據框:

Names   loc.items
Name1   343 1756
Name2   5   15
Name3   688 1667
Name4   88  444
Name5   1   1
....
Name99  22  111

很容易得到一個堆疊條,其中名稱在 x 軸上並且堆疊條在每個名稱上。

我想反過來。 我想要兩個帶有 99 個堆疊(內部名稱)的堆疊條用於位置和項目。 就像桌子本身一樣。 Name(x) 的每個堆棧對都有 loc.(x) 和 items(x) 的厚度 我怎樣才能制作這個圖表?

這個:

myclist[[ myclist.loc[:,"names"]]].plot(x='carrier', kind='bar', stacked=True) 

或者這種方法

# plot data in stack manner of bar type
df.plot(x='Carrier', kind='bar', stacked=True,
        title='Stacked Bar Graph by dataframe')
plt.show()

不起作用。 如果數據框如下所示,它就可以工作。 但是(手動)編寫為系列“位置”和“項目”以及單獨的“列”它可以工作。 我認為它應該是同一件事,但似乎並非如此:

df = pd.DataFrame([['location', 10, 20, 10, 26], ['items', 20, 25, 15, 21]],
                  columns=['Names', 'Name1', 'Name2','Name3', 'Name99'])

在此處輸入圖像描述

這是可能的,但我認為有很多行,所以 100 行的輸出不可讀:

df.set_index('Names').T.plot(kind='bar', stacked=True)

圖片

一個可能的想法是過濾器名稱,在Name1Name4之間:

df.set_index('Names').loc['Name1':'Name4'].T.plot(kind='bar', stacked=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM