【问题标题】:How to highlight regions in a pandas plot? [duplicate]如何突出显示熊猫图中的区域? [复制]
【发布时间】:2018-07-27 19:37:26
【问题描述】:

我正在比较和绘制两个数组,我想绘制它们并以某种颜色突出显示数组a 小于数组b 的区域。这是我正在尝试使用的代码,其中ca 小于b 的地方:

import pandas
import numpy

numpy.random.seed(10)

df = pandas.DataFrame(numpy.random.randn(10, 2), columns=['a', 'b'])

df['c'] = df['a'] < df['b']

结果DataFrame是:

          a         b      c
0  1.331587  0.715279  False
1 -1.545400 -0.008384   True
2  0.621336 -0.720086  False
3  0.265512  0.108549  False
4  0.004291 -0.174600  False
5  0.433026  1.203037   True
6 -0.965066  1.028274   True
7  0.228630  0.445138   True
8 -1.136602  0.135137   True
9  1.484537 -1.079805  False

这是我在 ol'trusty MS Paint (RIP) 中制作的漂亮示例,展示了我想要制作的内容:

【问题讨论】:

  • 这不会显示任何尝试的代码,即使是在没有区域的情况下绘制图形。
  • Pandas 使用 matplotlib 进行绘图,所以我投票决定以骗子身份结束。

标签: pandas matplotlib


【解决方案1】:

您可以使用axvspan 尝试类似的操作。您可以避免创建专用的c 列。

ax = df.plot()

def highlight(indices,ax):
    i=0
    while i<len(indices):
        ax.axvspan(indices[i]-0.5, indices[i]+0.5, facecolor='pink', edgecolor='none', alpha=.2)
        i+=1

highlight(df[df['a'] < df['b']].index, ax)

【讨论】:

  • 谢谢!对于那些使用日期时间索引的人,我做了 M15 = dt.timedelta(minutes=15) 然后 ax.axvspan(indices[i] - M15, indices[i] + M15, ...)
  • 与其他被标记为重复的帖子不同,这显示了如何获得多个跨度。
猜你喜欢
  • 2014-11-22
  • 1970-01-01
  • 2012-08-21
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多