【发布时间】:2018-08-23 15:47:52
【问题描述】:
使用 matplotlib 我试图将条形图放在一起。这很常见,我已经浏览了一堆 stackoverflow 页面,但还是有问题。
df1
Net Count date
0 AA 242624806 2018-03-01 00:00:00.000
1 AA 213729127 2018-03-01 00:01:00.000
2 AA 4482234727 2018-03-01 00:02:00.000
3 AA 26042386 2018-03-01 00:03:00.000
4 AA 13444400 2018-03-01 00:04:00.000
df2
Net Count date
0 BB 242806 2018-03-01 00:00:00.000
1 BB 729127 2018-03-01 00:01:00.000
2 BB 85872722 2018-03-01 00:02:00.000
3 BB 26006231 2018-03-01 00:03:00.000
4 BB 123115400 2018-03-01 00:04:00.000
df3
Net Count date
0 CC 452806 2018-03-01 00:00:00.000
1 CC 129127 2018-03-01 00:01:00.000
2 CC 858722 2018-03-01 00:02:00.000
3 CC 26216231 2018-03-01 00:03:00.000
4 CC 33115400 2018-03-01 00:04:00.000
代码:
x=df['date'] #since the date are the same in both tables I only have 1 x
y=df['count']
y2=d2['count']
y3=d2['count']
plt.figure(figsize=(15,8))
plt.bar(x,y,label="AA")
plt.bar(x,y2,label="BB")
plt.bar(x,y3,label="CC")
plt.title("Count by Networks")
plt.legend(title="Network")
plt.show()
这是它的外观:
但我已经尝试过align=edge、align=center 并玩弄宽度,但它总是重叠。
我将如何进行这项工作,以使条不堆叠,使它们并排?
像这样:
**** 已更新答案 *****
Y.Luo 这对我来说最适合这样的熊猫:
dateindex=df1['date']
aa=dict(zip(x,df1['count']))
bb=dict(zip(x,df2['count']))
cc=dict(zip(x,df3['count']))
dd=dict(zip(x,df4['count']))
ee=dict(zip(x,df5['count']))
dfbar = pd.DataFrame({'AA': aa, 'BB': bb, 'CC': cc,'DD': dd, 'EE': ee}, index=dateindex)
# Non-stacked bar plot
dfbar.plot.bar(figsize=(16, 6))
plt.title("Count by Networks")
plt.legend(title="Network")
plt.show()
【问题讨论】:
-
您可以将数据合并到一个数据框中,每个原始数据框一列,并用熊猫绘制它。您还可以附加所有数据框以创建一个长表格,其中另一列指定类别并使用 seaborn 的 hue 参数。我认为这两种方法都有足够的问题。如果您在实施它们时遇到问题,请针对该问题提出具体问题。
-
这就是问题@ImportanceOfBeingErnest 的方式太多了。您建议使用哪种方法,这对所有这些仍然有点新。我想要一个 matplotlib 中的 ^ 示例,因为我最常使用它
-
熊猫是最简单的。 Matplotlib 是最通用的。您的数据框中的日期是实际日期还是字符串?
-
它是一个日期,由 date_trunc('minute', log_time) 生成。我还看到了一些关于 plt.hist
-
您知道要回答这个问题,我现在需要自己复制这些数据帧。这真的是太多的工作了。如果您需要帮助,只需从一开始就提供minimal reproducible example。
标签: matplotlib plot jupyter-notebook seaborn