zoukankan      html  css  js  c++  java
  • 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的介绍就结束了,以后或许会用到新的东西,到时候在进行介绍。

  • 相关阅读:
    POJ 3280 Cheapest Palindrome (区间DP)
    UVaLive 4731 Cellular Network (期望DP)
    UVa 11404 Palindromic Subsequence (LCS)
    UVa 11552 Fewest Flops (DP)
    UVa 10534 Wavio Sequence (LIS+暴力)
    UVaLive 4256 Salesmen (简单DP)
    UVaLive 4094 WonderTeam (贪心)
    UVaLive 3266 Tian Ji -- The Horse Racing (贪心)
    POJ 3723 Conscription (最小生成树)
    NodeJS学习笔记 进阶 (4)基于express+muter的文件上传(ok)
  • 原文地址:https://www.cnblogs.com/Frandy/p/python_pyplot_eps.html
Copyright © 2011-2022 走看看