我有这个情节。
fig,ax = plt.subplots(figsize=(7.5,7.5))
ax.plot(time, y)
ax.plot(time, y1, color='red')
ax.plot(time, y2, color='black')
我想填充黑色和红色曲线之间的区域。所以我在做:
y1=np.array(y1)
y2=np.array(y2)
ax.fill_between(time, y1, y2,where=y1>=y2,color='grey', alpha='0.5')
但它返回以下内容:
ValueError: Argument dimensions are incompatible
答案 0 :(得分:0)
在您的情况下,您不需要为您想要做的事情设置where
条件。 fill_between函数只需要为你的提议提供等长OX数组的最大数组和最小数组(在你的情况下为time
)。
以下是一个例子:
import numpy as np
import matplotlib.pyplot as plt
fig,ax = plt.subplots(figsize=(7.5,7.5))
time = np.linspace(0,1,100)
y = np.sin(time*10)
y1 = y - 0.5
y2 = y + 0.5
ax.plot(time, y)
ax.plot(time, y1, color='red')
ax.plot(time, y2, color='black')
ax.fill_between(time, y1, y2, color='grey', alpha='0.5')
plt.tight_layout()
plt.show()
要查看where
的工作原理,请在我的示例中将该行更改为此行:
ax.fill_between(time, y1, y2, where=(time<0.5), color='grey', alpha='0.5')
或者这是另一个条件示例:
ax.fill_between(time, y1, y2, where=(y1<0.0), color='grey', alpha='0.5')
正如您所看到的,它的作用是创建一个布尔数组,并仅绘制条件为true
的OX轴点。
您也可以手工制作布尔数组(当然是OX轴的长度)。
答案 1 :(得分:0)
似乎需要将color
和alpha
参数作为color =...,alpha=...
传递。
正确:
ax.fill_between(x, y_min, y_max,color = color, alpha=0.1)
错:
ax.fill_between(x, y_min, y_max,color, alpha=0.1)