gpt4 book ai didi

python - 如何在pylab(pyplot)中使用阶梯线(阶梯曲线)填充两种不同颜色的区域?

转载 作者:行者123 更新时间:2023-12-05 06:16:34 24 4
gpt4 key购买 nike

这是我的第一个问题,请多多关照!

我绘制了两条线(步进线),y1 和 y2,其中 y1 是一个包含一些随机数的列表,y2 是 y1 列表中的每个前一个数字。

from pylab import *

y1 = ([100, 101, 102, 103, 102, 101, 102, 103])
y2 = ([100, 100, 101, 102, 103, 102, 101, 102])
x = (list(range(len(y1))))

plot(x, y1, linestyle='steps', drawstyle="steps")
plot(x, y2, linestyle='steps', drawstyle="steps")
xlabel('No.')
ylabel('Level')
title('Step Lines Chart')
grid(True)
fill_between(x, y1, y2, where=(y1 > y2), color='C0', alpha=0.3, step="pre")
fill_between(x, y1, y2, where=(y1 < y2), color='C1', alpha=0.3, step="pre")
show()

enter image description here

从这里我想用两种颜色在这些线之间填充,当 y1 > y2 是一种颜色,当 y1 < y2 是另一种颜色时,但我只能用一种颜色填充...

我试过 where=(y1 < y2)...条件,还尝试从 here 复制文档示例, 但无故不会弹出带有图表的窗口。

所以我有点卡住了...

最佳答案

好的,我使用了 numpy array 并且它部分工作,如果 y1 和 y2 像示例中那样,只有当方 block 上升或下降时才会绘制两种颜色,但是当两个方 block 处于同一水平时,没有充满... enter image description here

from pylab import *
import numpy as np

y1 = np.array([100, 101, 102, 103, 102, 101, 102, 103])
y2 = np.array([100, 100, 101, 102, 103, 102, 101, 102])

#y1 = np.array([100,100, 101,101, 102,102, 103,103, 102,102, 101,101, 102,102, 103,103])
#y2 = np.array([100,100, 100,100, 101,101, 102,102, 103,103, 102,102, 101,101, 102,102])

x = np.array(list(range(len(y1))))

plot(x, y1, '-', drawstyle="steps")
plot(x, y2, '-', drawstyle="steps")
xlabel('No.')
ylabel('Level')
title('Step Lines Chart')
grid(True)
fill_between(x, y1, y2, where=(y1 > y2), color='C0', alpha=0.3, step="pre")
fill_between(x, y1, y2, where=(y1 < y2), color='C1', alpha=0.3, step="pre")
fill_between(x, y1, y2, where=(y1 == y2), color='yellow', alpha=0.3, step="pre")
show()

我尝试将所有数字加倍(参见注释语法)并且工作得更好一些,但仍然不完美,现在可以很好地绘制,但是当两个正方形处于同一水平时,只会填充正方形的一半

enter image description here

我只需要当 y1(蓝线)大于 y2(橙线)时,方 block 用蓝色填充,y1 < y2 用橙色填充

关于python - 如何在pylab(pyplot)中使用阶梯线(阶梯曲线)填充两种不同颜色的区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62064395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com