buf

BE something YOU love and understand
posts - 94, comments - 35, trackbacks - 0, articles - 2
   :: 首页 :: 新随笔 :: 联系 ::  :: 管理

matplotlib绘图导入word

Posted on 2012-12-08 22:29 buf 阅读(1416) 评论(0)  编辑 收藏 引用 所属分类: Misc
在mpl中绘制的图形通常保存成png图片,但是这种格式放在word里边缩放会变模糊。简单的解决办法(比较曲折):
mpl绘图保存为pdf->adobe reader打开->使用快照工具复制图片->在word中“选择性粘贴”,使用增强型图元方式
似乎ctrl+v直接粘贴和上述“选择性粘贴”的效果一样。

总的来说比粘贴png效果强多了。

另外,mpl绘图保存为pdf时,如果使用了中文字符,会出现一个错误提示。估计与字体设置有关,虽然显示中文可以在代码中直接指定字体,例如:
plt.title(u'中文标题', fontproperties='simhei')
但若需要保存为pdf,似乎必须修改配置文件,用户或系统级的(分别位于documents and settings/user/.matplotlib/matplotlibrc和Python27/Lib/site-packages/matplotlib/mpl-data/matplotlibrc),一种经过验证的修改是:(估计其它字体也是可以的吧)
font.family         : monospace
font.monospace      : Yahei Mono
需要将yahei_mono.ttf(13.8MB)复制到Python27/Lib/site-packages/matplotlib/mpl-data/fonts/ttf目录下

最后,字体啥的修改后都把documents and settings/user/.matplotlib/fontList.cache清除一次吧。


P.S. 以上标红的部分,测试过了,使用了Windows系统自带的华文细黑:
font.family : sans-serif
font.sans-serif : STXihei
另外还需要:
pdf.fonttype : 42

但是随便生成一个pdf都是6MB,参考http://blog.sina.com.cn/s/blog_57eac1ec01012h9i.html
生成文件偏大应该是“pdf.fonttype : 42”这个选项的关系,导致所有字体被嵌入pdf。
关于这个可以google:matplotlib pdf font subset
只有注册用户登录后才能发表评论。