【问题标题】:matplotlib bar chart with pandas dataframe values带有熊猫数据框值的 matplotlib 条形图
【发布时间】:2020-08-31 08:15:58
【问题描述】:

我正在尝试使用 matplotlib 绘制一个非常简单的条形图,底层数据在 pd.dataframe 中以日期时间时间戳作为索引

但是在尝试时

ax = plt.subplot(111)
ax.bar(data.index, data[subset])

我得到错误: TypeError:只有 size-1 的数组可以转换为 Python 标量

一个可行的解决方法可能是

ax.bar(data.index, [i[0] for i in data[subset].values.tolist()])

但我很困惑为什么我不能使用 pd.dataframe 作为条形图的输入值。如果我使用完全相同的代码plot 而不是bar,那么一切正常。 我真的很想在这里使用 plt.bar 因为我正在构建一个更大的情节,这只是其中的一部分,所以 df.bar 没有帮助。

【问题讨论】:

  • 您介意提供mcve吗?
  • 通过df[subset].plot.bar(ax=ax)使用熊猫图
  • 检查下面的答案,你需要做类似的事情

标签: python pandas matplotlib bar-chart


【解决方案1】:

你真的很亲密:

  df = pd.DataFrame({'lab':['A', 'B', 'C'], 'val':[10, 30, 20]})
  ax = df.plot.bar(x='lab', y='val', rot=0)

您需要调用 df 并在其上调用 plot 函数。

【讨论】:

  • 谢谢,我知道这可能有效,但问题是我不想更改数据框的结构,因为它是更大情节的一部分。我只想用它创建一个条形图,我的 x 轴数据也在索引内,我不想添加另一列,因为这会弄乱其余代码。但我认为 ax.bar() 的问题在于我的数据帧切片仍然是数据帧而不是系列。
  • 这是一个例子,这根本不会改变你的数据框。第一行显示有一个示例数据框,在这种情况下,您的数据框来自任何地方,并不重要,第二行正在调用数据框的绘图功能。那是你需要尝试的!