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 轴的长度)。

似乎参数 coloralpha 需要作为 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)