【问题标题】:shade region of interest in matplotlib chart [duplicate]matplotlib图表中感兴趣的阴影区域[重复]
【发布时间】:2018-11-16 06:28:49
【问题描述】:

给定一个类似的情节

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(s)
ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='sine')
ax.grid()
plt.show()

如何自动对图表的 y 值介于(例如)1.25 和 0.75 之间的图表的垂直切片(从下到上)进行着色?

这里的正弦只是一个样本,绘图的实际值不太规则。

我见过FIll between two vertical lines in matplotlib,它看起来与这个问题相似,但那里的答案在固定 x 值之间隐藏了一个区域。我希望阴影区域由 y 值确定。

【问题讨论】:

  • 啊,但是标记的重复项对固定 x 值之间的区域进行了阴影处理。我希望阴影区域由 y 值确定。

标签: python numpy matplotlib


【解决方案1】:

您可能正在寻找 ax.fill_between,它非常灵活(请参阅链接文档)。

对于您的具体情况,如果我理解正确,这应该足够了:

fig, ax = plt.subplots()
ax.plot(s)
ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='sine')
ax.fill_between(range(len(s)), min(s), max(s), where=(s < 1.25) & (s > 0.75), alpha=0.5)
ax.grid()

【讨论】:

  • 虽然函数在这些值之间,但我正在寻找对竖线进行着色。
  • 看看我的编辑,我想这就是你想要的?
  • 是的!我不知道为什么我不能将其标记为答案,显然是。
  • 现在标记为答案
  • 该死,你是对的。对于像这样滥用您的时间和专业知识,我深表歉意。该文件中缺少数据,这对我们来说可能是一个重大问题 - 很高兴我现在而不是以后发现它!
【解决方案2】:

您可以使用ax.axvspan,这显然正是您想要的。为获得更好的结果,请使用低于 0.5 的 alpha 值,并可选择设置颜色和边缘颜色/宽度。

无花果,斧头 = plt.subplots() ax.plot(s) ax.set(xlabel='时间 (s)', ylabel='电压 (mV)', title='sine') ax.axvspan(0.75, 1.25, alpha=0.2) ax.grid() plt.show()

如果您希望阴影处于不同的方向(水平而不是垂直),还有ax.axhspan 方法。

【讨论】:

  • 我已经尝试过了,虽然它没有给出任何错误,但我也没有看到任何阴影区域。
  • 那是因为,在你当前的情节序列中,我猜没有数据。但是您可以明确设置ylim,即使您不绘制任何数据。这个评论在你目前的情况下有意义吗?
  • 我需要阴影区域取决于绘图的值。
猜你喜欢
  • 1970-01-01
  • 2011-08-10
  • 2012-02-22
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 2012-04-25
相关资源
最近更新 更多