matplotlib 生成 eps 插入到 tex
matplotlib 生成 eps 插入到 tex
matplotlib 生成 eps,就可以插入到 tex 中,而且是矢量图,放大不失真。
而且因为图中的元素都是嵌入到 pdf 中,所以图中的文字也可以选中及复制。
注意 matplotlib 的 backend 要选择 Agg ,用 TkAgg 作为 backend 只能生成一张空白图片。
testeps.py
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
x=range(100)
y=[i**2 for i in x]
plt.plot(x,y,label='x**2')
plt.legend(frameon=False)
plt.xlabel('x')
plt.ylabel('y')
plt.title('x**2')
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。
搞定中文
#encoding=utf-8
import matplotlib
matplotlib.use('Agg')
import matplotlib.font_manager as fm
myfont = fm.FontProperties(fname='/usr/share/fonts/WinFonts/simhei.ttf')
import matplotlib.pyplot as plt
plt.clf()
x=range(100)
y=[i**2 for i in x]
plt.plot(x,y)
plt.legend([u'x**2图例'],prop=myfont,frameon=False)
plt.xlabel('x')
plt.ylabel('y')
plt.title(u'x**2的图像',fontproperties=myfont)
plt.savefig('testeps_pdf.pdf',format='pdf')
(参考 wesleyhsiung 在 matplotlib图例中文乱码? 下的 回答 )
或
#encoding=utf-8
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 plt.clf()
x=range(100)
y=[i**2 for i in x]
plt.plot(x,y)
plt.legend([u'x**2图例'],frameon=False)
plt.xlabel('x')
plt.ylabel('y')
plt.title(u'x**2的图像')
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.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?
END
2017.08.21 19:35
matplotlib 生成 eps 插入到 tex的更多相关文章
- 生成eps图形
(1) matlab可直接将生成图片保存为eps格式. print -fhandle -rresolution -dfileformat filename 例子:set(gcf,'paperposit ...
- 生成.eps文件方法
生成.eps文件方法 背景: 要写论文了,图像的分辨率是一大痛点 方法一: 两步生成.eps文件 用visio 制作图形,保存为pdf格式: 直接用adobe acrobat 打开pdf,然后保存为. ...
- 快速将一个表的数据生成SQL插入语句
将一个表中的数据生成SQL插入语句,方便系统快速初始化,在数据库中执行创建以下过程就可以了. ) Drop Procedure GenerateData go CREATE PROCEDURE Gen ...
- Springboot接口简单实现生成MySQL插入语句
Springboot接口简单实现调用接口生成MySQL插入语句 在实际测试中,有这样一个需求场景,比如:在性能压力测试中,可能需要我们事先插入数据库中一些相关联的数据. 我们在实际测试中,遇到问题,需 ...
- 生成大量插入语句,并将语句写入txt文件中
import java.io.*; /** * Created by czz on 2019/9/23. */ public class TTest { /** * 生成大量插入语句,并将语句写入tx ...
- 基于爬取百合网的数据,用matplotlib生成图表
爬取百合网的数据链接:http://www.cnblogs.com/YuWeiXiF/p/8439552.html 总共爬了22779条数据.第一次接触matplotlib库,以下代码参考了matpl ...
- Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)
一.各库功能说明 pdfminer----用于读取pdf文件的内容,python3安装pdfminer3k jieba----用于中文分词 wordcloud----用于生成词云 matplotlib ...
- Locust 测试结果通过Matplotlib生成趋势图
目的: 相信大家对于使用Loadrunner测试后的结果分析详细程度还是有比较深刻的感受的,每个请求,每个事务点等都会有各自的趋势指标,在同一张图标中展示.如下图: 而Locust自身提供的chart ...
- python 基于 wordcloud + jieba + matplotlib 生成词云
词云 词云是啥?词云突出一个数据可视化,酷炫.以前以为很复杂,不想python已经有成熟的工具来做词云.而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑.准备好了吗,快跟我一起 ...
随机推荐
- svn + nginx unit + python3自动化发布web服务方法
本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...
- mybatis insertUseGeneratedKeys 返回主键为null
package tk.mybatis.mapper.common.special; import org.apache.ibatis.annotations.InsertProvider; impor ...
- jackson把json转换成LIst
把json数据转换成list ObjectMapper mapper = new ObjectMapper(); List<YeWuLuYou> readValue = mapper.r ...
- npm包--rimraf
含义 rimraf 包的作用:以包的形式包装rm -rf命令,用来删除文件和文件夹的,不管文件夹是否为空,都可删除. 安装 npm install rimraf --save-dev 使用 const ...
- 数据库常用的事务隔离级别和原理?&&mysql-Innodb事务隔离级别-repeatable read详解
转载地址:https://baijiahao.baidu.com/s?id=1611918898724887602&wfr=spider&for=pc https://blog.csd ...
- [转帖]Windows7/2008中批量删除隧道适配器的方法
https://www.jb51.net/os/windows/479838.html 客户现场的硬件信息总是发生变化 这里查找一下资料 尝试一下. 1.在网卡属性的“网络”中,将“Internet协 ...
- python3使用ctypes在windows中访问C和C++动态链接库函数示例
python3使用ctypes在windows中访问C和C++动态链接库函数示例 这是我们的第一个示例,我们尽量简单,不传参,不返回,不访问其他的动态链接库 一 测试环境介绍和准备 测试环境: 操作系 ...
- odoo 权限问题
odoo 权限问题 权限组问题 权限组是为了将人员按组划分同一分配权限.权限组的建立是基于每个应用来实现的 建立一个应用的分组(可省略,主要用于创建用户时有选择项) 建立一条record记录model ...
- VMware虚拟机里Centos7的IP地址查看方法
电脑的虚拟机里面安装了一个Cetos 7 ,想用Xshell链接进行操作,发现没有IP显示,需要IP地址,我才能进行连接,用命令ip addr查看下: 发现ens33 没有inet 这个属性,那么就没 ...
- Dlib Opencv cv2.fitEllipse用于人眼轮廓椭圆拟合
dlib库的安装以及人脸特征点的识别分布分别在前两篇博文里面 Dlib Python 检测人脸特征点 Face Landmark Detection Mac OSX下安装dlib (Python) 这 ...