Matplotlib:参数尺寸是曲线之间不兼容的填充
Matplotlib: Argument dimensions are incompatible fill between curves
我有这个情节。
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')
但它 returns 以下内容:
ValueError: Argument dimensions are incompatible
在你的情况下,你不需要为你想做的事情设置 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')
如您所见,它创建了一个布尔数组,并仅在 OX 轴上条件为 true
的点上绘制。
您也可以手动制作布尔数组(当然是 OX 轴的长度)。
似乎参数 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)
我有这个情节。
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')
但它 returns 以下内容:
ValueError: Argument dimensions are incompatible
在你的情况下,你不需要为你想做的事情设置 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')
如您所见,它创建了一个布尔数组,并仅在 OX 轴上条件为 true
的点上绘制。
您也可以手动制作布尔数组(当然是 OX 轴的长度)。
似乎参数 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)