如何在熊猫中创建叠加条形图

Bor*_* L. 9 python plot pandas

在更新我早期的一些代码以使用 pandas.DataFrame 时,我遇到了以下问题......

这是我的原始代码将创建的参考图:

import pandas as pd
import matplotlib.pyplot as plt

a = range(1, 25)
b = a
c = [x+2 for x in b]
d = [x*2 for x in c]

plt.bar(a, d)
plt.bar(a, c)
plt.bar(a, b)
plt.show()
Run Code Online (Sandbox Code Playgroud)

参考图

问题定义:

我想使用 pandas.DataFrame 内置功能创建这个非常相同的图。准确地说,只有条形放置是相关的,我对轴刻度的格式/标签不感兴趣。

df = pd.DataFrame({'a': a, 'b': b, 'c': c, 'd': d}, columns=['a', 'b', 'c', 'd'])
df.set_index('a', inplace=True)

df.plot.bar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

第一个熊猫图

无论是默认的熊猫条形图(如上所示)还是添加stacked=True选项(见下文),都不会产生预期的结果。

df.plot.bar(stacked=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

第二个熊猫图

不幸的是,overlay=True选项不存在。

是否有另一种(最好是优雅的)方法来达到预期的结果?

如果没有其他可用的,我将只修改 pandas.DataFrame 值(即从彼此减去列),然后使用stacked=True选项。在我实施之前,我期待着看到您的建议......

Ami*_*ory 7

您可以ax使用 返回的值设置参数subplots,如下所示:

_, ax = plt.subplots()
df.d.plot(kind='bar', ax=ax, color='red')
df.c.plot(kind='bar', ax=ax, color='green')
df.b.plot(kind='bar', ax=ax, color='blue')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明