在matplotlib中2 y坐标之间的阴影区域

时间:2018-06-01 15:15:43

标签: python matplotlib

我试图根据两个垂直坐标创建一个阴影矩形(矩形的长度应该跨越整个x轴)。 我尝试使用fill_between以下内容(p1& p2是数据坐标):

f, ax1 = plt.subplots()   
x = np.linspace(200,300,2000)
y = x**(2)
y1 = x
p1 = 4700
p2 = 7700

ax1.plot(x, y, lw=2)
ax1.set_xlabel('Temperature $[K]$', fontweight='bold')
ax1.set_ylabel('Pressure $[mb]$', fontweight='bold')
ax1.fill_between(x, y1.fill(p1), y1.fill(p2))

但我收到以下错误:

TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

有什么问题?有没有更好的方法呢?

谢谢!

4 个答案:

答案 0 :(得分:3)

可能你的意思是使用axhspan

OOM

enter image description here

答案 1 :(得分:1)

IIUC,问题在于使用.fill()功能。您可以使用fill_betweenx数组以及p1p2值来避免这种情况,因为fill_between可以接受y1的标量值}和y2

ax1.fill_between(x, p1, p2)

enter image description here

注意,您可以通过添加coloralpha参数轻松更改颜色和透明度:

ax1.fill_between(x, p1, p2, color='limegreen', alpha=0.5)

答案 2 :(得分:0)

数组的fill方法不返回数组,返回None

答案 3 :(得分:-2)

你误解了fill_between。使用时,建议将y表示为函数:

def y(x):
    return x**2
section = np.arange(start,end,0.1)
plt.fill_between(section,y(section))

将为startend提供合适的值。