情节:颜色都比不同颜色大

El *_*ude 3 python matplotlib scipy

在绘图中,如何用不同的颜色为高于阈值的所有值着色?就像上面的所有mean + std 或mean + 2*std 一样?

tom*_*m10 11

使用 aLineCollection是正确的方法,但您也可以使用屏蔽数组在一行代码中完成一个简单的版本:

在此输入图像描述

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()
Run Code Online (Sandbox Code Playgroud)

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

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