【问题标题】:Fill_between Matplotlib when data is negative数据为负数时的 Fill_between Matplotlib
【发布时间】:2019-12-09 16:53:23
【问题描述】:

假设我有一个这样的df

df = pd.DataFrame({'A': [-50,-44,-39,-35,-32,-30,-29,-28,-27,-26],
                  'B': [-46,-49,-52,-53,-52,-49,-46,-44,-43,-42]})

我只是想在使用 Matplotlib 绘制它们时填充列下方的区域 AB。我知道函数fill_between,如果数据是肯定的,下面的代码可以正常工作:

plt.plot(z.index, z['A'], color='red')
plt.plot(z.index, z['B'], color='blue')
plt.fill_between(x=z.index,y1=z['A'], color='red', alpha=0.25)
plt.fill_between(x=z.index,y1=z['B'], color='blue', alpha=0.25)

但是,由于数据是负数,在这种情况下,上面的代码填充了绘制线上方的区域。我只想将填充区域置于数据下方,无论它是正数还是负数,因为我正在使用的实际数据可以是非此即彼,并且通常有时会以 0 为中心,即一半的数据可能是正数另一半是否定的。

任何人都可以建议如何将其填在下面吗?干杯

【问题讨论】:

  • plt.plot(z.index, z['A'], color='red'); plt.plot(z.index, z['B'], color='blue'); y_min = min(z['A'] + z['B'] + [0]); plt.fill_between(x=z.index, y1=y_min, y2=z['A'], color='red', alpha=0.25); plt.fill_between(x=z.index, y1=y_min, y2=z['B'], color='blue', alpha=0.25) 怎么样?

标签: python matplotlib


【解决方案1】:

fill_between 中的默认y2 参数默认为0。如果你想有下面的填充,你可以将它y2 更改为 y 轴的最小值:

z = pd.DataFrame({'A': [-50,-44,-39,-35,-32,-30,-29,-28,-27,-26],
                  'B': [-46,-49,-52,-53,-52,-49,-46,-44,-43,-42]})

plt.plot(z.index, z['A'], color='red')
plt.plot(z.index, z['B'], color='blue')

ymin = plt.gca().get_ylim()[0]

plt.fill_between(x=z.index,y1=z['A'], y2=ymin, color='red', alpha=0.25)
plt.fill_between(x=z.index,y1=z['B'], y2=ymin,  color='blue', alpha=0.25)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2015-06-02
    • 2018-06-20
    • 1970-01-01
    相关资源
    最近更新 更多