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,圖像部分的文字沒法選中,沒法像上面同樣能夠選中及複製。
使用 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 以外的選項。
另外一種不錯的方法是使用 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.io、gliffy、lucidchart、processon 等在線網站。
使用 gephi 等繪製網絡。
What GUI applications are there to assist in generating graphics for TeX?
Which open source software is best for network data analysis?
2017.08.21 19:35