首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3.3 + Matplotlib 1.2.0: pdf导出生成"'str‘不支持缓冲区接口“错误

Python 3.3 + Matplotlib 1.2.0: pdf导出生成"'str‘不支持缓冲区接口“错误
EN

Stack Overflow用户
提问于 2013-05-06 10:41:15
回答 1查看 527关注 0票数 1

我刚开始从matlab/mathematica迁移到python进行技术计算。我一直在学习如何使用matplotlib.pyplot包,希望有人能帮助我处理字体。我最终需要将图形输出保存为pdf或eps文件,以便在Adobe Illustrator中打开。最初,我的pdf和eps输出包含轮廓字体(而不是保留文本信息的嵌入式字体)。在this helpful advice之后,我得到了以下代码:

代码语言:javascript
复制
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时,最后一行生成下面复制的错误。有谁能给我指个方向吗?我运行的是Python3.3和matplotlib 1.2.0,使用的是MacOS10.6上的Pyzo发行版。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-07 03:36:25

这是matplotlib中的一个错误,已在此处修复:https://github.com/matplotlib/matplotlib/pull/1978#issuecomment-17493157

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16391280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档