在绘图中,如何用不同的颜色为高于阈值的所有值着色?就像上面的mean + std 或mean + 2*std 一样?
最佳答案
使用 LineCollection
是正确的方法,但您也可以使用屏蔽数组在一行代码中完成一个简单的版本:
import numpy as np
import numpy.ma as ma
import matplotlib.pyplot as plt
# make a weird continuous function
r, t = np.random.random((100,)), np.arange(0, 100, .01)
y = sum(r[3*i+0]*np.sin(r[3*i+1]*t + 10*r[3*+2]) for i in range(10))
# generate the masked array
mask = ma.masked_less(y, 1.1)
plt.plot(t, y, 'k', linewidth=3)
plt.plot(t, mask, 'r', linewidth=3.2)
plt.show()
这里的作弊之处在于,它使用过滤后的数据绘制原始数据,因此有时可以显示基础曲线,具体取决于其渲染方式。我把这里的红线加粗了一点,但我不确定这是否有影响。优点是对于 1.1
的阈值,它基本上是一行 ma.masked_less(y, 1.1)
。
这里需要屏蔽数组的原因是,否则会有一条线连接不同的线段,并且屏蔽会导致这些点无法绘制。
关于python - 剧情: color all larger than different color,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27951521/