当'线宽'属性设置,调用' savefig'抛出' TypeError:无法使用灵活类型执行缩减'。这是一个MWE:
# Create sample data.
x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-2.0, 2.0, 0.1)
X, Y = np.meshgrid(x, y)
Z = 10.0 * (2*X - Y)
# Plot sample data.
plt.contour(X, Y, Z, colors = 'black', linewidths = '1')
plt.savefig('test.pdf')
图形渲染不是问题(调用' plt.show()'工作正常)。如果未设置linewidths属性,例如将第二行更改为
plt.contour(X, Y, Z, colors = 'black')
' savefig'按预期工作。这是一个错误还是我错过了什么?
答案 0 :(得分:2)
这不是错误,因为plt.contour()
的{{3}}指定linewidths
应该是[None
|号码|你提供一个数字作为string
的数字元组。
以下是我的输出代码(我正在使用matplotlib 1.4.3
)。
>>> matplotlib.__version__
'1.4.3'
您的代码在Python 2.7下“有效”,但linewidths
参数实际上被忽略,产生的图形看起来像这样,无论值是什么(这都是linewidths='10'
。
与Python 3.4相反,我收到以下错误:
TypeError: unorderable types: str() > int()
将linewidths
设置为int
(或float
),如下所示会产生正确的输出并适用于Python 2.7和Python 3.4。同样,这是设置为10
:
plt.contour(X, Y, Z, colors = 'black', linewidths = 10)