情节:将所有大于不同颜色的颜色涂上颜色

3
在一个图表中,如何将超过某个阈值的所有数据用不同颜色标注出来?比如说,如何标注出所有高于均值加标准差或者均值加两倍标准差的数据?

2
使用LineCollection - Gerrat
1
你指的是哪种类型的图?是线条(例如 ax.plot(...))、点(例如 ax.scatter(...)ax.plot(..., ls='none'))、图像或网格数据(例如 imshow/pcolormesh/pcolor),还是其他类型的图? - Joe Kington
图的线条颜色。我知道如何全局设置,但是对于短线段怎么办? - El Dude
1个回答

11

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

这里的技巧是使用过滤后的数据覆盖原始数据,因此根据呈现方式的不同,底层曲线有时会显示出来。我将红线加粗了一点,但我不确定是否有所不同。优点在于,对于阈值为1.1,基本上只需要一条线ma.masked_less(y, 1.1)
掩码数组之所以在这里需要,是因为否则会有一条连接不同线段的线,并且掩码会使这些点不被绘制。

请参见此示例 - Splines

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接