• matplotlib 生成 eps 插入到 tex


    matplotlib 生成 eps 插入到 tex


     

    matplotlib 生成 eps,就可以插入到 tex 中,而且是矢量图,放大不失真。

    而且因为图中的元素都是嵌入到 pdf 中,所以图中的文字也可以选中及复制。

    注意 matplotlib 的 backend 要选择 Agg ,用 TkAgg 作为 backend 只能生成一张空白图片。

    testeps.py

     1 import matplotlib
     2 matplotlib.use('Agg')
     3 import matplotlib.pyplot as plt
     4 x=range(100)
     5 y=[i**2 for i in x]
     6 plt.plot(x,y,label='x**2')
     7 plt.legend(frameon=False)
     8 plt.xlabel('x')
     9 plt.ylabel('y')
    10 plt.title('x**2')
    11 plt.savefig('testeps.eps',format='eps')

    testeps.tex

    documentclass[12pt]{article}
    usepackage{fontspec}
    usepackage{graphicx}
    setmainfont{SimHei}
    	itle{x**2}
    author{maxuewei}
    date{}
    
    egin{document}
    maketitle
    
    egin{center}
    $$
    y=x^2
    $$
    即
    $$
    y=x*x
    $$
    图像如下\
    end{center}
    egin{figure}[htbp]
        centeringincludegraphics[width=320pt]{testeps.eps}
    		%caption{something}label{fig:1}
    end{figure}
    end{document}

    用xelatex编译,生成pdf。

    搞定中文


     1 #encoding=utf-8
     2 import matplotlib
     3 matplotlib.use('Agg')
     4 import matplotlib.font_manager as fm
     5 myfont = fm.FontProperties(fname='/usr/share/fonts/WinFonts/simhei.ttf')
     6 import matplotlib.pyplot as plt
     7 plt.clf()
     8 x=range(100)
     9 y=[i**2 for i in x]
    10 plt.plot(x,y)
    11 plt.legend([u'x**2图例'],prop=myfont,frameon=False)
    12 plt.xlabel('x')
    13 plt.ylabel('y')
    14 plt.title(u'x**2的图像',fontproperties=myfont)
    15 plt.savefig('testeps_pdf.pdf',format='pdf')

    (参考 wesleyhsiung 在 matplotlib图例中文乱码? 下的 回答 )

     1 #encoding=utf-8
     2 import matplotlib
     3 matplotlib.use('Agg')
     4 import matplotlib.pyplot as plt
     5 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
     6 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
     7 
     8 plt.clf()
     9 x=range(100)
    10 y=[i**2 for i in x]
    11 plt.plot(x,y)
    12 plt.legend([u'x**2图例'],frameon=False)
    13 plt.xlabel('x')
    14 plt.ylabel('y')
    15 plt.title(u'x**2的图像')
    16 plt.savefig('testeps_pdf.pdf',format='pdf')

    (参考 python matplotlib 中文显示参数设置 )

    生成pdf

    然后终端运行

    pdf2ps testeps_pdf.pdf testeps.eps

    将 pdf 转成 eps 

    然后就可以像上面一样编译tex了。

    不过最终生成的pdf,图像部分的文字无法选中,无法像上面一样可以选中及复制。

    其余图形 


    方法 1

    使用 MS PowerPoint、WPS、Libre office、xfig、Dia、yEd、Inkscape、LatexDraw、Ipe、TikzEdt 等画图并导出 eps 或 pdf ,然后插入到 tex 。

    方法如下: 

    使用 WPS 或 Libreoffice Draw 或 Libreoffice Impress 画好图之后,导出 pdf,然后使用 pdfcrop 或类似工具对pdf进行裁剪

     pdfcrop --margins "5 5 5 5" ppt.pdf final.pdf 

    使用 yED 时要注意在 Text Rendering Policy 中选择 Vectorized Text 之外的选项。

    方法 2

    另一种不错的方法是使用 Dia 画图,然后导出 pgf 的 tex 代码,假如导出为 dia_export.tex,在主文档中 include{dia_export} 就可以了。

    因为在 Dia 中不支持数学公式,所以可以在用 Dia 画图时先敲入公式,再在导出的 dia_export.tex 中把它对 $  等的转义去掉,再用 LaTex 编译就可以了。

    如果需要在背景颜色不为白色的 PDF 中插入图的话,画图时可以在『文件-图表属性』下设置背景颜色为灰色,然后对于图中的元素『右键-属性』,设置『填充颜色』、『线条颜色』等,其中有一个『透明度』的选项可以设置为 0 即为透明。

    其他


     

    使用 graphviz/dot  语言画图,可方便地画出树、流程图等。

    使用 D3.js、Chart.js 等 JavaScript 库画图。见 Javascript chart library

    使用 TikZ、Metapost 等。

    使用 draw.iogliffylucidchartprocesson 等在线网站。

    使用 gephi 等绘制网络。

    What GUI applications are there to assist in generating graphics for TeX?

    Which open source software is best for network data analysis?

    END

    2017.08.21 19:35

  • 相关阅读:
    P2121 拆地毯
    ※P1194 买礼物
    P1991 无线通讯网
    P2872 [USACO07DEC]Building Roads S
    python+pycharm+selenium+谷歌浏览器驱动 自动化环境部署(一)
    from bs4 import BeautifulSoup 引入需要安装的文件和步骤
    小菜鸟的python3.8.5+RobotFramework+RIDE的安装之路
    IntelliJ IDEA 之 工具箱(Tool Box)
    RobotFrameWork Web自动化测试环境搭建
    Python pip 安装与使用
  • 原文地址:https://www.cnblogs.com/maxuewei2/p/7406259.html
Copyright © 2020-2023  润新知