Python 返回值之间填充\u错误:参数维度不兼容
我想在x=0到x<3的范围内填充此图中曲线下的区域。但是我得到了Python 返回值之间填充\u错误:参数维度不兼容,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,我想在x=0到x
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)