matplotlib 生成 eps 插入到 tex

matplotlib 生成 eps 插入到 tex


 

matplotlib 生成 eps,就能夠插入到 tex 中,並且是矢量圖,放大不失真。javascript

並且由於圖中的元素都是嵌入到 pdf 中,因此圖中的文字也能夠選中及複製。java

注意 matplotlib 的 backend 要選擇 Agg ,用 TkAgg 做爲 backend 只能生成一張空白圖片。python

 

testeps.pysegmentfault

 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。app

 

 

搞定中文


 

 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圖例中文亂碼? 下的 回答 )工具

post

 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 中文顯示參數設置 )網站

生成pdfui

而後終端運行

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

相關文章
相關標籤/搜索