Gus*_*nte 0 python charts matplotlib bokeh seaborn
我需要创建一个如下所示的图表,一系列堆叠的条形图。有些值为正值,有些值为负值。我希望图表的显示方式就像 Excel 中的堆叠条形图一样,它将正值向上堆叠,将负值向下堆叠。有没有一种简单的方法可以对 N 个类别执行此操作?
这是一些示例数据:
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]})
数据框的plot函数按照您描述的方式处理负值。如果我们将数据框中的某些值更改为负数,则该行
df.plot(kind="bar", stacked=True)
给我们这个图表:
Series我们可以通过对数据框的行进行求和并将返回的对象绘制在axes与条形图相同的位置上来添加类似于问题图像中的黑线的“总计”线:
生成第二个图表的代码如下。
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()
| 归档时间: | 
 | 
| 查看次数: | 11323 次 | 
| 最近记录: |