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}
\title{x**2}
\author{maxuewei}
\date{}

\begin{document}
\maketitle

\begin{center}
$$
y=x^2
$$
即
$$
y=x*x
$$
圖像如下\\
\end{center}
\begin{figure}[htbp]
    \centering\includegraphics[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM