首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >包含多个系列的Python堆叠条形图

包含多个系列的Python堆叠条形图
EN

Stack Overflow用户
提问于 2018-06-21 01:11:13
回答 1查看 9K关注 0票数 0

我需要创建一个如下图所示的图表,一系列堆叠的条形图。有些值是正值,有些值是负值。我希望图表的显示就像excel中的堆叠条形图一样,它向上堆叠正值,向下堆叠负值。对于N个类别,有没有简单的方法可以做到这一点?

以下是一些示例数据:

代码语言:javascript
复制
df = pd.DataFrame(index=['06-11-2018', '06-12-2018', '06-13-2018', '06-14-2018', '06-15-2018'], 
                  data={'A': [-378, -2347, 509, 987, 513], 
                        'B': [-527, -2599, 765, 533, 670], 
                        'C': [-2343, -2273, 2093, 2197, 1990], 
                        'D': [-1845, -1853, 3325, 1306, 2160]})

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 02:04:18

数据框的plot函数以您所描述的方式处理负值。如果我们将数据框中的一些值更改为负值,则行

代码语言:javascript
复制
df.plot(kind="bar", stacked=True)

给我们提供了这个图表:

我们可以添加一条与问题图像中的黑线类似的“总”线,方法是对数据框中的行求和,并将返回的Series对象绘制在与条形图相同的axes上:

生成第二个图表的代码如下所示。

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(index=['06-11-2018', '06-12-2018', '06-13-2018',
                         '06-14-2018', '06-15-2018'], 
                  data={'A': [-378, 2347, 509, 987, 513], 
                        'B': [527, 2599, -765, 533, 670], 
                        'C': [2343, -2273, 2093, -2197, 1990], 
                        'D': [1845, 1853, -3325, 1306, 2160]})

ax = df.plot(kind="bar", stacked=True)
df.sum(axis=1).plot(ax=ax, color="k")

plt.show()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50953645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档