情节:颜色都大于不同的颜色

时间:2015-01-14 20:08:20

标签: python matplotlib scipy

在绘图中,如何以不同颜色为阈值以上的所有值着色?像所有上面的意思+标准或平均+ 2 *标准?

1 个答案:

答案 0 :(得分:1)

使用LineCollection是正确的方法,但你也可以使用蒙版数组在一行代码中做一个简单的版本:

enter image description here

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()

这里的作弊是它使用过滤后的数据绘制原始数据,因此有时底层曲线可以显示,具体取决于渲染方式。我在这里做了一个更粗的红线,但我不确定它是否有所作为。优点是它基本上是一行ma.masked_less(y, 1.1),阈值为1.1

这里需要屏蔽数组的原因是否则会有一条连接不同段的线,而掩码会导致这些点不被绘制。