如何根据值对绘制曲线的不同部分着色

问题描述 投票:0回答:1

我正在尝试弄清楚如何绘制数据框列,其中线条的颜色根据其值而变化,但我对如何引用这些值感到困惑。

例如,我有这个数据框:

    Timestamp    Value
-------------------------
0       5:00         4
1       5:01         5
2       5:02         8
3       5:03        12
4       5:04        13
5       5:05         2
...

我简单地运行某种形式:

df.plot(x="Timestamp", y=["Value"], figsize=(9, 8)) 

获取值随时间变化的图。

现在,我将我的值分为不同的类别/箱,其中:0-5 =“低”,6-15 =“中”和16+ =“高”。我想要相同的图,但现在曲线上与“低”相对应的所有值都为蓝色,与“中”相对应的为绿色,与“高”相对应的为红色。因此,我将看到绘制的一条曲线,由“值”列组成,但根据值分段为不同的颜色。我怎样才能在Python中完成这个?我对如何设置索引/键以将值转换为颜色以及 .plot() 中需要什么参数才能真正具有基于值的颜色感到困惑。

python pandas matplotlib plot charts
1个回答
1
投票

鉴于此:

索引 时间戳 价值
0 5:00 3
1 5:01 4
2 5:02 5
3 5:03 13
4 5:04 14
5 5:05 15
6 5:06 17
7 5:07 18
8 5:08 19

然后:

x = df.Timestamp
y = df.Value

for x1,x2, y1,y2 in zip(x, x[1:], y, y[1:]):
  if (0<=y1) & (y1<=5):
    plt.plot([x1, x2], [y1, y2], 'b')
  elif (6<=y1) & (y1<=15):
    plt.plot([x1, x2], [y1, y2], 'g')
  else:
    plt.plot([x1, x2], [y1, y2], 'r')

plt.show()

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.