【问题标题】:Plot: color all larger than different color情节:颜色都大于不同的颜色
【发布时间】:2015-03-13 03:26:05
【问题描述】:

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

【问题讨论】:

  • 你指的是什么类型的情节?一条线(例如ax.plot(...))、点(例如ax.scatter(...)ax.plot(..., ls='none'))、图像或网格数据(例如imshow/pcolormesh/pcolor),还是别的什么?
  • 绘图的线条颜色。我知道如何全局设置,但是短段呢?

标签: python matplotlib scipy


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多