Matplotlib:参数尺寸是曲线之间不兼容的填充

时间:2015-10-01 20:01:06

标签: python matplotlib plot fill

我有这个情节。

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')

enter image description here

我想填充黑色和红色曲线之间的区域。所以我在做:

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

2 个答案:

答案 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()

这给出了以下输出: enter image description here

要查看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)

似乎需要将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)