小编典典

情节:所有颜色大于不同颜色

python

在图中,如何用不同的颜色为高于阈值的所有值上色?像高于均值+标准或均值+ 2 * std的所有内容一样?


阅读 188

收藏
2021-01-20

共1个答案

小编典典

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

这样做的弊端在于它会使用过滤后的数据绘制原始数据,因此有时基础曲线可能会显示出来,具体取决于渲染方式。我在这里把红线弄得有点粗,但是我不确定它是否有所作为。好处是,它基本上是一行,ma.masked_less(y, 1.1)阈值为1.1

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

2021-01-20