Matplotlib 绘制条形图,在数据框中具有 2 列关系

Posted

技术标签:

【中文标题】Matplotlib 绘制条形图,在数据框中具有 2 列关系【英文标题】:Matplotlib plot bar chart with 2 columns relationship in dataframes 【发布时间】:2021-01-22 13:31:39 【问题描述】:

我一直在绘制数据框。 这可能很简单,但我无法弄清楚!

我有这样的熊猫数据框记录:

    Year  occurrence   Count
0   2011           0     306
1   2011           1    1838
2   2012           0     422
3   2012           1    1816
4   2013           0     423
5   2013           1    3471
6   2014           0     537
7   2014           1    3239
8   2015           0     993
9   2015           1    7668
10  2016           0     415
11  2016           1    2052
12  2017           0     511
13  2017           1    4750
14  2018           0     705
15  2018           1    2125

我想将此数据框绘制为条形图,这样,x 轴包含年份,Y 轴包含计数。

    现在我想根据出现值绘制此计数。表示在 2011 年,第一个柱的 count=306,第二个柱的 count=1838,其余年份相同。 另外,如果可能的话,我还必须显示基于同一事物的堆积条形图。 还有,如何绘制包含两条线的折线图? 任何人都可以解决这个问题吗? 我根据我的结果创建了示例 df:
df = spark.createDataFrame(
(2011,  0,   306),
(2011,  1,  1838),
(2012,  0,   422),
(2012,  1,  1816),
(2013,  0,   423),
(2013,  1,  3471),
(2014,  0,   537),
(2014,  1,  3239),
(2015,  0,   993),
(2015,  1,  7668),
(2016,  0,   415),
(2016,  1,  2052),
(2017,  0,   511),
(2017,  1,  4750),
(2018,  0,   705),
(2018,  1,  2125),
, ['Year', 'occurrence', 'Count'])

pdf_1 = df.toPandas()
我试过这个:
pdf_1.plot(x='Year', y=['Count'], kind='bar')

但它并没有给我我想要的东西。

【问题讨论】:

【参考方案1】:

你可以使用pivot来重塑:

pdf_1.pivot('Year', 'occurrence', 'Count').plot.bar(stacked=True)

输出:

【讨论】:

感谢@BigBen,快速解答!另外,您知道如何在相同条件下简单地绘制折线图和条形图(每年 2 个条形图)吗?【参考方案2】:

根据@BigBen,

三个答案我都想通了:

# For Question 1
pdf_1.pivot(index='Year', columns='above_threshold', values='Count').plot.bar()

# For Question 2
pdf_1.pivot('Year', 'above_threshold', 'Count').plot.bar(stacked=True)

# For Question 3
pdf_1.pivot(index='Year', columns='above_threshold', values='Count').plot.line()

【讨论】:

以上是关于Matplotlib 绘制条形图,在数据框中具有 2 列关系的主要内容,如果未能解决你的问题,请参考以下文章

Python matplotlib绘制条形柱状图并添加数据标签

matplotlib:在条形图上绘制多列熊猫数据框

如何在 matplotlib pandas 的一张图中组合两个文件的两个条形图

使用字典使用 matplotlib 绘制条形图

如何从两个或多个数据框中绘制分组条形图

数据分析之matplotlib篇