2013-05-06 62 views
1

我剛開始從matlab/mathematica移植到python進行技術計算。我一直在學習如何使用matplotlib.pyplot包,並希望有人能夠幫助我使用字體。我最終需要將圖形輸出保存爲可在Adobe Illustrator中打開的pdf或eps文件。最初,我的pdf和eps輸出包含概述字體(而不是嵌入字體保留文本信息)。以下this helpful advice,我結束了以下代碼:Python 3.3 + Matplotlib 1.2.0:pdf導出生成「'str'不支持緩衝區接口」錯誤

import matplotlib as mpl 
import matplotlib.pyplot as plt 
# if I omit the next line, the plot saves without error, but with outlined fonts 
mpl.rcParams['pdf.fonttype'] = 42  #set Truetype fonts for Adobe 
plt.plot(range(5),range(5),'r-') 
plt.ylabel('y') 
plt.xlabel('x') 
plt.title('title') 
plt.show() 
plt.savefig("myfig.pdf") 

然而,當我設置rcParams [「pdf.fonttype」] = 42,最後一行生成下面複製的錯誤。任何人都可以將我指向正確的方向嗎?我正在運行Python 3.3和matplotlib 1.2.0,在Mac OS 10.6上使用Pyzo發行版。

Traceback (most recent call last): 
    File "<tmp 1>", line 11, in <module> plt.savefig("myfig.pdf") 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/pyplot.py", line 472, in savefig 
    return fig.savefig(*args, **kwargs) 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/figure.py", line 1364, in savefig 
    self.canvas.print_figure(*args, **kwargs) 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backends/backend_qt4agg.py", line 161, in print_figure 
    FigureCanvasAgg.print_figure(self, *args, **kwargs) 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backend_bases.py", line 2093, in print_figure 
    **kwargs) 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backend_bases.py", line 1845, in print_pdf 
    return pdf.print_pdf(*args, **kwargs) 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backends/backend_pdf.py", line 2307, in print_pdf 
    file.close() 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backends/backend_pdf.py", line 507, in close 
    self.writeFonts() 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backends/backend_pdf.py", line 607, in writeFonts 
    fonts[Fx] = self.embedTTF(realpath, chars[1]) 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backends/backend_pdf.py", line 1054, in embedTTF 
    return embedTTFType42(font, characters, descriptor) 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backends/backend_pdf.py", line 987, in embedTTFType42 
    self.currentstream.write(unicode_cmap) 
    File "/Applications/pyzo2013b/lib/python3.3/pyzo-packages/matplotlib/backends/backend_pdf.py", line 379, in write 
    compressed = self.compressobj.compress(data) 
TypeError: 'str' does not support the buffer interface 
+0

你能和2.x的測試呢?你可以嘗試用github中的當前主分支嗎? – tacaswell 2013-05-06 03:43:16

+0

我可以在Linux上用python 3.2.3確認同樣的錯誤。不過,它在python 2.7.3上可以正常工作。 – 2013-05-06 04:15:44

+0

@JanHlavacek你們其中一個人可以在github上打開一個問題(如果還沒有的話)。 – tacaswell 2013-05-06 14:57:20

回答

相關問題