2016-02-04 53 views
1

爲什麼我在matplotlib.pyplot中獲取ValueError?這裏是我的代碼:在matplotlib.pyplot.savefig()中獲取帶有字符串格式的ValueError文件名參數

import matplotlib.pyplot as plt 

plt.plot([1,2,3,4,5,6]) 
f = 1.234 
s = "number %i" % f 
print s 
plt.savefig(s) 

迄今爲止這麼好。該圖被保存到名稱爲1(f的整數部分)的文件中 但是,如果我這樣做。

plt.plot([1,2,3,4,5,6]) 
f = 1.234 
s = "number %.2f" % f 
print s 
plt.savefig(s) 

打印語句打印1.234如預期,而plt.savefig(S)給出:

ValueError: Format "23" is not supported. Supported formats: eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff.

不知何故,savefig()方法混合字符串與保存的文件格式格式化。我使用matplotlib 1.5.1運行python 2.7.1

+2

爲什麼不追加文件擴展名反正。你測試過了嗎?我害怕'。' float中的字符會破壞文件名,但afaik在字符串格式化中無法幫助,除非要添加更多代碼來隱式地替換'。'。與另一個字符,如'plt.savefig(s.replace('。',','))' –

+0

這是一個很好的觀點,我沒有考慮它。它現在有用,謝謝! – iasonas

回答

3

plt.savefig嘗試根據文件擴展名猜測所需的文件格式。 如果擴展名無法識別,則會出現ValueError錯誤。

您既可以更改文件名,包括公認的文件擴展名,或包括format參數:

plt.savefig(s, format='png') 
相關問題