Matplotlib:'savefig'在设置'linewidths'属性时抛出TypeError

时间:2015-02-28 14:15:13

标签: matplotlib

当'线宽'属性设置,调用' 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'按预期工作。这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:2)

这不是错误,因为plt.contour()的{​​{3}}指定linewidths应该是[None |号码|你提供一个数字作为string的数字元组。

以下是我的输出代码(我正在使用matplotlib 1.4.3)。

>>> matplotlib.__version__
'1.4.3'

您的代码在Python 2.7下“有效”,但linewidths参数实际上被忽略,产生的图形看起来像这样,无论值是什么(这都是linewidths='10'

linewidths as a string

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

linewidth as an int