Matplotlib简介和pyplot的简单使用——输出eps格式图像

最开始使用Matplotlib,一是因为它不需要像Matlab一样花很长时间启动一个图形界面,二是它可以直接保存为.eps格式。
在图像显示出来之后,在左下角有几个按钮,最后一个就是保存,在保存的对话框选择.eps格式即可。另一种方式就是在程序里面使用pyplot.savefig(name,format="eps"),可以用format指定格式为eps,也可以不使用format,而是写在name里面,它会自动从name里面找到扩展名来决定格式。
虽然这样得到了.eps格式的图像,但是它的周围有空白的地方,有两种方法来去掉这些空白,一种方法是使用gsview,在windows上,一般会使用这个工具,另一种方法是使用epstool(http://pages.cs.wisc.edu/~ghost/gsview/epstool.htm),我使用的代码是

print target
tp0 = "tp0" + target
tp1 = "tp1" + target
plt.savefig(tp0,dpi=160)
cmd0 = "epstool -b -t4 --output %s %s" %(tp1,tp0)
cmd1 = "epstool -p --output %s %s" %(target,tp1)
cmd2 = "rm tp*"
os.system(cmd0)
os.system(cmd1)
os.system(cmd2)

一般情况下,输出的eps文件都可以用的,但有时候却会出现问题,比如在latex编译得到的pdf文件里图像只有一部分,或者全是空白等,这主要问题是eps格式里面的boudningbox有负值,这是一个比较麻烦的问题,目前还没有找到好的解决办法,虽然epstool说是可以调整,重新计算boundingbox,但是依然会有负值,暂时的解决办法就是将图片缩小,比如以前是figsize=(16,8),缩小为figsize=(9,4.5)。目前测试的结果就是宽度超过10,boundingbox就会出现负值,而比9大一点还是可以的,一般取9就可以了,缩小的时候,字体也要相应缩小,不然使用默认字体,就出出现字相对图像太大的情况。
之前提到了,可以设置fig的boundingbox,但没有深入研究,有兴趣的可以继续探讨。

至此,对Matplotlib的介绍就结束了,以后或许会用到新的东西,到时候在进行介绍。

posted @ 2012-10-02 13:31  Frandy.CH  阅读(15867)  评论(0编辑  收藏  举报