我试图根据两个垂直坐标创建一个阴影矩形(矩形的长度应该跨越整个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''
有什么问题?有没有更好的方法呢?
谢谢!
答案 0 :(得分:3)
答案 1 :(得分:1)
IIUC,问题在于使用.fill()
功能。您可以使用fill_between
和x
数组以及p1
和p2
值来避免这种情况,因为fill_between
可以接受y1
的标量值}和y2
。
ax1.fill_between(x, p1, p2)
注意,您可以通过添加color
和alpha
参数轻松更改颜色和透明度:
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))
将为start
和end
提供合适的值。