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

Python 如何使用pylab(pyplot)中的阶跃线(阶跃曲线)用两种不同的颜色填充区域?,python,python-3.x,matplotlib,plot,Python,Python 3.x,Matplotlib,Plot,这是我的第一个问题,所以要友善 我已经绘制了两条线(步进线),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', dr

这是我的第一个问题,所以要友善

我已经绘制了两条线(步进线),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()
从pylab导入*
y1=([100101102103102101102103])
y2=([100100101102103102101102])
x=(列表(范围(len(y1)))
绘图(x,y1,linestyle='steps',drawstyle='steps”)
绘图(x,y2,linestyle='steps',drawstyle='steps”)
xlabel('编号')
ylabel('级别')
标题(“步骤线图”)
网格(真)
在(x,y1,y2,其中=(y1>y2),color='C0',alpha=0.3,step=“pre”)之间填充
在(x,y1,y2,其中=(y1

从这里开始,我想用两种颜色填充这些线之间,当y1>y2使用一种颜色时,当y1 我尝试了
where=(y1
条件,也尝试了从中复制文档示例,但没有理由不会弹出带有图表的窗口


所以我有点卡住了…

好的,我使用了numpy数组,它部分工作,如果y1和y2与示例中的一样,只有当正方形上升或下降时,才会绘制两种颜色,但是当两个正方形处于同一水平时,就没有填充。。。

从pylab导入*
将numpy作为np导入
y1=np.数组([100101102103102101102103])
y2=np.数组([100100101102103102101102])
#y1=np.数组([100100101101102102103102102101101101102103103])
#y2=np.数组([100100100101101102102103102102101101102102])
x=np.数组(列表(范围(len(y1)))
绘图(x,y1,'-',drawstyle=“步骤”)
绘图(x,y2,'-',drawstyle=“步骤”)
xlabel('编号')
ylabel('级别')
标题(“步骤线图”)
网格(真)
在(x,y1,y2,其中=(y1>y2),color='C0',alpha=0.3,step=“pre”)之间填充
在(x,y1,y2,其中=(y1
我尝试将所有数字翻倍(参见注释语法)并做得更好一点,但并非仍然不完美,现在可以很好地绘制,但当两个正方形处于同一水平时,将只填充正方形的一半


我所需要的是当y1(蓝线)大于y2(橙线)时,用蓝色填充的正方形和用橙色填充的y1你能使用
numpy
?@DavidG当然,上面的脚本只是一个例子,但我可以用任何方式操纵它,y1和y2需要是numpy数组,where子句才能工作
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()