【发布时间】:2018-10-03 11:24:42
【问题描述】:
假设我有一个信号,比如一个正弦波:
x = np.arange(100)
y = np.sin(x/10)
当我绘制此图时,我想用红色突出显示 y 的值高于某个阈值的区域,例如0.7。我想过做这样的事情
region = [i for i, e in enumerate(y) if e >= 0.7]
fig, ax = plt.subplots()
ax.plot(x, y)
k = region [0]
for i in region:
if i-k == 1:
ax.axvspan(k, i+1, facecolor='red', alpha=0.2)
k = i
plt.show()
添加+1 是因为我想“包含”突出显示区域中的最后一个点。
但是,这会产生重叠的axvspans,这意味着第一个和最后一个会“更轻”(因为我使用的是alpha = 0.2),如图:
是否有另一种(可能更简单)的方法来实现这一点?
【问题讨论】:
标签: python arrays numpy matplotlib