【发布时间】:2018-10-13 22:43:41
【问题描述】:
在更新我之前的一些代码以使用 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()
问题定义:
我想使用 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()
默认的 pandas 条形图(如上所示)和添加 stacked=True 选项(见下文)都没有产生预期的结果。
df.plot.bar(stacked=True)
plt.show()
很遗憾,overlay=True 选项不存在。
是否有另一种(最好是优雅的)方法来达到预期的结果?
如果没有其他可用的,我将只修改 pandas.DataFrame 值(即相互减去列),然后使用 stacked=True 选项。之前,我实现了,我期待看到你的建议......
【问题讨论】: