Python 返回值之间填充\u错误:参数维度不兼容

Python 返回值之间填充\u错误:参数维度不兼容,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,我想在x=0到x

我想在x=0到x<3的范围内填充此图中曲线下的区域。但是我得到了
ValueError:参数维度不兼容
。我做错了什么

import matplotlib.pyplot as plt

fig, (ax1) = plt.subplots(1,1)
x = [1,2,3]
y=[10,20,30]
ax1.plot(x, y)
ax1.fill_between(x, 0, y, where=x<3, facecolor='green', interpolate=True)
plt.show()
导入matplotlib.pyplot作为plt
图(ax1)=plt.子批次(1,1)
x=[1,2,3]
y=[10,20,30]
ax1.绘图(x,y)

ax1.fill_between(x,0,y,其中=x问题是试图使用标准python列表创建布尔掩码。如果将
x
y
强制转换为
numpy.array
,则所有操作都应能正常工作

import matplotlib.pyplot as plt
import numpy as np

fig, (ax1) = plt.subplots(1)
x = np.array([1,2,3])
y = np.array([10,20,30])
ax1.plot(x, y)
ax1.fill_between(x, 0, y, where=x<3, facecolor='green', interpolate=True)
plt.show()

可能值得注意的是,这是一个python遗留(2)问题,因为在py3
[1,2,3]<3
中引发了一个
TypeError
False
的结果是由于python在最后一种手段中会返回到比较对象
id
(iirc,可能是内存地址),所以我甚至不确定这是否是确定的。
In [89]: x=[1,2,3]

In [91]: x<3
Out[91]: False

In [92]: x=np.array(x)

In [93]: x<3
Out[93]: array([ True,  True, False], dtype=bool)