【问题标题】:Pandas Stacked Bar and Plot IssuesPandas Stacked Bar 和绘图问题
【发布时间】:2020-09-07 13:27:23
【问题描述】:

我正在尝试用线图覆盖堆积条形图。在 vscode jupyter notebook 中运行 pandas 0.25.3。我已经使用下面相对标准的方式用不同的数据集绘制了很多次 - 但在这种情况下,我只绘制了后一个 matplot 对象

fig, ax = plt.subplots()
ax2=ax.twinx()
df1.plot(kind='bar',stacked=True, ax=ax)
df2.plot(ax=ax2,linestyle='-', marker='o')

df1 和 df2 按设计具有相同的索引。我还尝试合并这些以防万一这是驱动问题以及使用secondary_y的组合,将ax2对象设置为matplot对象。我也尝试了以下工作,并尝试简化为主轴上的条形图。次要和主要折线图也可以很好地绘制,因此基础数据没有问题(nan free 等)

pandas DataFrame how to mix bar and line plots with different scales

数据为如下形式(连接时)- 其中 col3 是线图,col1 和 col2 是堆叠条形

idx   col1    col2    col3
1.0    0.2    0.8    0.6
2.0    0.1    0.9    0.52
3.0    0.1    0.9    0.5
4.0    0.05    0.95    0.43

这个网站上有很多类似的问题,但它们往往更适合初学者。我错过了版本兼容性问题吗?我之前在 30 秒内写过这个情节,但花了太多时间试图找出这里的问题。有人见过这个吗?

【问题讨论】:

  • 我也确实看到了,但似乎不是解决方案。稍微把我的头发拉出来。
  • 样本数据是否代表您的实际数据?具体来说,您的数据是否有时间索引?如果没有,您的数据中有多少行?
  • 数据具有代表性——8行13列。索引是浮动的。前 12 列总和为 1 (100%),最后一列是衰减函数 0。
  • 在这里更新 - 我最终通过将索引设置为 str 类型来绘制它!

标签: pandas matplotlib


【解决方案1】:

简单地重置索引的数据类型在这里对我有用:

df1.index = df1.index.astype(str)
df2.index = df2.index.astype(str)

由于我一直在刻度之间绘制一条 vline,因此功能有所损失,但这似乎是我能找到的最佳解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多