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已经有成熟的工具来做词云.而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑.准备好了吗,快跟我一起 ...
随机推荐
- 服务消费者Feign和Ribbon的区别
1.Ribbon通过注解@EnableEurekaClient/@EnableDiscoveryClient向服务中心注册: PS:选用的注册中心是eureka,那么就推荐@EnableEure ...
- 利用gulp,当引入文件改动时,版本号自动更新~
gulp自动更新版本号 安装依赖 yarn add gulp-rev yarn add gulp-rev-collector 本次依赖的版本号为: "gulp": "^3 ...
- SQL 游标的使用
适用场景:对查询出的结果集遍历,作用类似于其他语言的列表循环语句. 相关语法: --定义游标 DECLARE cr CURSOR FOR( SELECT Cust_ID ,Cust_Name ,IDC ...
- 使用Swagger辅助开发Fabric Application的Web API
前面的几篇博客,我们已经把Fabric环境搭建好了,也可以使用Go开发ChainCode了,那么我们在ChainCode开发完毕后,可以通过CLI来测试ChainCode的正确性,ChainCode开 ...
- 超链接标签绑定JS事件&&不加"javascript:;"导致的杯具
很久以来,在写Html和JS时,经常会给超链接<a>标签,绑定JS事件. 我们经常看到这样的写法,<a href="javascript:;" onclick=& ...
- 在混合开发框架模式中,简化客户端对Web API的频繁调用
在混合开发框架模式中,有时候我们在处理树形节点的时候,需要很多关联的处理,可能需要结合用户配置信息,属性字典,以及表的字段分类等信息来展示一个结构树,那么在处理的时候就可能会频繁的对这些接口API进行 ...
- NodeJs之文件上传
NodeJs之文件上传 一,介绍与需求 1.1,介绍 1,multer模块 multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单MIME编码为multipar ...
- 洛谷 P1962 斐波那契数列
题目链接:https://www.luogu.org/problemnew/show/P1962 题目大意: 略 分析: 由于数据规模很大,需要用矩阵快速幂来解. 代码如下: #pragma GCC ...
- Linux(Ubuntu)使用日记------部署JavaWeb项目到服务器
0.前言 本博文内容是建立在你可以通过SSH连接到远程服务器的基础上的,如果你还没有用SSH连接到远程服务器,请参考此文(腾讯云服务器): http://www.cnblogs.com/hwtblog ...
- DAY29、元类
一.eval内置函数eval内置函数的使用场景: 1.执行字符串会得到相应的执行结果 2.一般用于类型转换,得到dict.list.tuple例: dic_str = ''{'a':1,'b':2}' ...