如何在python中创建堆叠的条形图[重复]
Posted
技术标签:
【中文标题】如何在python中创建堆叠的条形图[重复]【英文标题】:How to create a stacked barplot in python [duplicate] 【发布时间】:2019-06-18 23:49:14 【问题描述】:我有一个熊猫数据框如下
batsman non_striker partnershipRuns
0 SK Raina A Flintoff 23
1 SK Raina DR Smith 90
2 SK Raina F du Plessis 36
3 SK Raina JA Morkel 14
10 MS Dhoni CK Kapugedera 18
11 MS Dhoni DJ Bravo 51
12 MS Dhoni F du Plessis 27
13 MS Dhoni JA Morkel 12
14 MS Dhoni JDP Oram 6
我发现用 pandas 或 seaborn 创建堆积条形图真的很困难。任何帮助将不胜感激
【问题讨论】:
【参考方案1】:使用 Pandas 创建绘图非常简单。一旦你有了一个数据框,只需像这个例子一样调用plot
(我使用了你的示例数据集)。
import pandas as pd
import matplotlib.pyplot as plt
#create the dataframe from your data
batsman = ['SK Raina','SK Raina','SK Raina','SK Raina','MS Dhoni','MS Dhoni', 'MS Dhoni','MS Dhoni','MS Dhoni']
non_striker = [ 'A Flintoff', 'DR Smith' ,'du Plessis','JA Morkel', 'Kapugedera', 'DJ Bravo', 'du Plessis', 'JA Morkel', 'JDP Oram']
partnershipRuns = [23,90,36,14,18,51,27,12, 6]
df = pd.DataFrame('batsman': batsman, 'non_striker': non_striker, 'partnershipRuns': partnershipRuns)
#make your data numerical
df = df.pivot(columns='non_striker',index='batsman').fillna(0)
#plot it
df.plot(kind='bar',stacked=True,legend=False)
plt.show()
这会产生如下内容:
如果你的数据不是数字,你必须先转换它。
【讨论】:
【参考方案2】:我可以通过两种方式做到这一点
1)
df1=df.pivot(columns='non_striker',index='batsman').fillna(0)
df1.plot(kind='bar',stacked=True,legend=False)
2)
df1=df.groupby(['batsman','non_striker']).sum().unstack().fillna(0)
df1.plot(kind='bar',stacked=True,legend=False)
两者都有效。我们需要在列之间创建一个表,然后在用 0s 填充 NA 后进行绘图
【讨论】:
以上是关于如何在python中创建堆叠的条形图[重复]的主要内容,如果未能解决你的问题,请参考以下文章
堆叠的水平条形图,图例在图内。我如何使这个情节更明显[重复]
如何使用 seaborn 为我的 DataFrame 创建堆叠条形图 [重复]