【你投稿了没?10万+作者“平台好才是真的好”,也许下一个就是你!】(点击看详情)是由城市数据派主办的征稿活动,小派在此恭候派友们投稿分享!【本期看点】LaTeX是一种非常好用的文档编辑软件,overleaf作为一款在线LaTeX编辑系统,它的出现使得LaTeX的使用门槛急剧降低。不过LaTeX除了具有优秀的文档编辑功能之外,还具有强大的图形绘制与数据可视化功能。结合LaTeX在线系统overleaf,本文将介绍如何用LaTeX画出漂亮的论文插图,实例包括时空序列数据可视化、时空数据张量复原技术流程图、贝叶斯网络,源代码来源于GitHub开源项目 awesome-latex-drawing (该项目目前已获得450+次标星、70+次fork),网址为:https://github.com/xinychen/awesome-latex-drawing  本期投稿  作者:cat数学爱好者一、LaTeX 基本介绍众所周知,LaTeX是一种基于TEX的排版系统,也是一款非常好用的文档编辑软件,LaTeX在生成复杂表格和数学公式方面具有突出的表现,因此,它非常适用于生成高质量的数学类文档。除编辑文档外,LaTeX也支持绘制各类图形,目前已经有非常多的相关工具包。可以说,LaTeX是一款与时俱进、功能极其强大的软件。▲ 图1  LaTeX logo遗憾的是,LaTeX并不像我们常用的Word这般“亲民”甚至容易上手,LaTeX是通过程序,更确切地说是通过一连串命令来编辑文档的,这使得很多初学者对LaTeX望而却步。▲ 图2   LaTeX绘图实例:时序张量回归示意图▲ 图3  LaTeX绘图实例:贝叶斯时序矩阵分解的贝叶斯网络

在图形绘制与数据可视化方面,相比常用编程语言(如Python、Matlab),LaTeX具有一定的优势:

① 在大量科技论文的插图中,LaTeX插入公式非常方便;

② LaTeX在绘图方面比常用编程语言更加灵活,例如绘图样式和图例均可手动调整;

③ LaTeX具有大量的图形绘制与数据可视化的工具包(例如tikz),这一点类似于Python(Python具有良好的开发社区,matplotlib、pyplot等工具包在可视化方面表现不俗)。

二、在线LaTeX系统:overleaf

overleaf是一款在线的LaTeX编辑系统,一直以来,被广大科研工作者誉为科研神器。当然,overleaf并非浪得虚名,其在设计上神奇的地方在于:

  • 免安装,免配置。简单来说就是,你什么都不需要安装,只要打开浏览器,输入overleaf.com,在该网址的网页界面注册账号就可以使用LaTeX了。

  • 包容万象,如你所需,应有尽有。只要输入\usepackage{}就可以调用工具包。

仅此两点,overleaf已经可以让绝大多数LaTeX用户啧啧称赞了。overleaf能让绝大多数LaTeX用户不再为本地安装LaTeX及其工具包的各种报错而抓狂。除此之外,overleaf还有一个非常显著的特点,它支持文档的多人协同编辑,通过添加合作者便可参与编辑。

▲ 图4  在线LaTeX系统overleaf的网页界面(图片截图自网址为https://www.overleaf.com)三、LaTeX的几个基本命令

- 创建文档,例如,创建绘图文档则可选用工具包tikz格式下的标准文档类型。

\documentclass[tikz, border = 0.1cm]{standalone}

- 调用工具包,例如,绘制图形的tikz、tikz-3dplot工具包、数学公式工具包amsmath。

\usepackage{tikz, tikz-3dplot}

\usepackage{amsmath, amsthm, amssymb}

\usepackage{xcolor}

- 编写文档正文

\begin{document}  % 开始文档

文档内容           % 编辑文档

\end{document}    % 结束文档

上述三个步骤为LaTeX绘图甚至编辑文档的基本格式,在上述命令的基础上,将源文件设置为.tex格式即可开始编写文档。如下图所示,在左侧的main.tex键入上述几行基本命令,并填入文档内容为“Hello world!”,点击编译按钮,即可得到右侧带有“Hello world!”的PDF文档。

▲ 图5  根据基本命令创建一个文档内容为“Helloworld!”的main.tex,并将其编译成PDF文档四、LaTeX绘图实例

实际上,LaTeX在绘图方面的表现得益于tikz工具包的开发,tikz是LaTeX原生支持的工具包,可以绘制各类科技论文中的插图,这其中包括二维图、三维图、流程图、示意图。

当然,一直以来,LaTeX绘图的缺点也很明显:难度较高,入门需要花费一定的时间。为了让更多人接触和使用LaTeX进行科技绘图,以下将选取几个绘图实例进行详细讲解。

▲ 图6 本文选取的几个绘图实例效果图1. 路段车速数据的时间序列

一般而言,时间序列是在不同时间上收集的数据,主要用于描述某观测变量随时间的动态变化过程。在时空数据中,大量连续时间观测数据均可归为时间序列,其中一部分数据属于多元时间序列,也存在相当一部分数据属于多维时间序列。在城市道路上,某条路段每间隔一定时间(如10分钟)获取的平均车速数据(抑或是车流量)是一种比较常见的时间序列。

使用LaTeX绘制时间序列可按如下步骤进行操作:

(一)在overleaf中创建一个项目

如下图所示,可选择空白项目,然后调用所需的工具包。

▲ 图7  在overleaf中定义一个名为example的文件,自动生成的main.tex可设置和调用基本工具包,如tikz和pdfplots(二)读入时间序列数据文件当然,也可以在main.tex文件中添加数据。如下图所示,数据文件speed1.data的第一列为时间标签,第二列为具体对应的车速值,数据文件的定义以\begin{filecontents}开始、以\end{filecontents}结束。▲ 图8  在main.tex文件中读入时间序列数据,并以.data为拓展名进行命名

(三)指定图例

选择横纵坐标,并对坐标轴进行定义,如下图所示。

▲ 图9  在main.tex文件中指定绘图图例,并设置横纵坐标轴

(四)输出图形

如下图所示,打开main.tex文件并点击recompile就可以生成绘图的pdf文件。

▲ 图10  打开main.tex文件、点击recompile就可以生成图形可视化效果,图中左侧为代码区域,右侧为输出pdf文件预览区域2. 时空交通数据修复技术框架

LaTeX在绘制技术框架方面也具有突出的优势,以时空交通数据修复技术为例,我们仅需要短短几步便可得到一份漂亮的可视化效果。具体而言:

(一)在overleaf中创建一个项目

(二)读入并插入所需的底图文件

例如下图红框标示出来的curve1.pdf和curve2.pdf,将两个文件的位置稍作调整即可。

▲ 图11  读入并插入底图文件

(三)设计三维张量

这一步稍微繁琐一点,首先需要根据所设置的顶点坐标,创建立方体结构,如下图所示,然后再考虑在\draw{}函数中设置三维张量的图形透明度。

▲ 图12  定义顶点设计三维张量,再通过\draw{}函数设置图形透明度

(四)对各部分图形进行组合

如下图所示,各部分图形需要采用箭头进行逻辑连接,与此同时,仍需要细心调整各图形的坐标,从而使得图形在视觉上具有连贯性。

▲ 图13  将各部分图形通过调整坐标进行组合,完成时空交通数据修复技术框架3. 张量分解的贝叶斯网络

尽管当下有很多支持绘制贝叶斯网络的软件,但单就支持数学公式而言,LaTeX无外乎是绝佳的选择。用LaTeX绘制贝叶斯网络时,需要将图形与数学公式进行组合,目前,工具包bayesnet支持绘制各类贝叶斯网络,调用tikz和bayesnet后,基本的图形命令为三种:

  • \node:绘制节点,可标记贝叶斯网络中的变量;

  • \path:绘制箭头,可标记贝叶斯网络中的变量间概率依赖关系;

  • \plate:绘制平面,可标记变量的数目。

▲ 图14  利用LaTeX绘制张量分解的贝叶斯网络,网络中包含节点、箭头和平面,基本命名可调用工具包tikz和bayesnet中的部分函数4. 时序矩阵分解的贝叶斯网络与张量分解的贝叶斯网络绘制相似,时序矩阵分解的贝叶斯网络也是由node、path、plate三个基本图形绘制命令构成,通过使用工具包tikz和bayesnet即可实现。▲ 图15  利用LaTeX绘制的时序矩阵分解贝叶斯网络  5. 矩阵分解的示意图

用LaTeX绘制下图所示的示意图时,需要将图形与数学公式进行组合,调用tikz后,基本的图形命令只有两个:

  • \draw:绘制图形,例如图中的矩形、公式节点;

  • \filldraw:绘制带填充的图形,例如图中红色和绿色的矩形。

▲ 图16  基于时序矩阵分解的时空交通数据预测示意图五、后记

LaTeX在图形绘制和数据可视化方面具有得天独厚的优势,本文通过实例解析,希望更多人学会并使用LaTeX进行绘图。当然,笔者深信,当你真正开始一项LaTeX绘图项目时,一定会被它强大的绘图功能所吸引。

 期待合作 

商业合作、投稿等,请联系客服微信号,加好友必须备注:合作+姓名

 更多服务 

数据血缘关系图 工具_如何在论文中画出漂亮的插图?用它!丨城市数据派相关推荐

  1. matlab学位论文绘图美化工具_推荐几个超级好用的工具,让你在论文中画出漂亮的插图...

    每次我们看到优秀期刊中的文章,比如<Nature>.<Cell>,我们都会被文章中的插图惊艳到.再瞅瞅我们自己论文中的插图,总觉得比别人low了好几个c层次.一个好看的插图绝对 ...

  2. python 论文插图_如何在python论文中画出漂亮的插图?-from知乎

    如何在论文中画出漂亮的插图? 经常看到别人论文中画出各种绚烂的插图,我想知道这些图都是用一些什么样的软件画出来的.比如下面给出的几张,好吧,我承认有的并不那么绚烂,但用什么样的软件比较合适呢?具体答案 ...

  3. 怎么控制latex插图的位置_如何在报告OR论文中画出漂亮的插图?

    在写论文或报告的时候,我们需要配上插图用来解释我们要表达的内容.一个精美的论文插图绝对是你的加分项,但是很多人的配图都不好看. 今天,小编就给大家说说漂亮插图的秘密. 工欲善其事,必先利其器.要想画好 ...

  4. python画笔的尺寸_Matplotlib 常用画图命令总结:使用 Python 在论文中画出一手漂亮的数据图...

    介绍 本文不是一篇详尽的.从简到繁的 Maplotlib 画图教程,而是用各种例子快速直观地让读者上手 Matplotlib 画图中的一些常用的.基础的操作.本文不对各种数据图(折线图.柱状图等)作介 ...

  5. pythonarcgis插件_【直播】基于Python开发ArcGIS插件:Python Add-in丨城市数据派

    原标题:[直播]基于Python开发ArcGIS插件:Python Add-in丨城市数据派 Add-in是什么? Add-in(加载项)是一种自定义项(例如工具栏上的工具集合),Add-in可以插入 ...

  6. Mysql 数据血缘关系图_hive血缘关系之输入表与目标表的解析

    接了一个新需求:需要做数据仓库的血缘关系.正所谓兵来将挡水来土掩,那咱就动手吧. 血缘关系是数据治理的一块,其实有专门的第三方数据治理框架,但考虑到目前的线上环境已经趋于稳定,引入新的框架无疑是劳民伤 ...

  7. Matplotlib 常用画图命令总结:使用 Python 在论文中画出一手漂亮的数据图

    介绍 本文不是一篇详尽的.从简到繁的 Matplotlib 画图教程,而是用各种例子快速直观地让读者上手 Matplotlib 画图中的一些常用的.基础的操作.本文不对各种数据图(折线图.柱状图等)作 ...

  8. 数据管理——数据血缘关系概述

    摘要: 数据的血缘关系作为数据治理很重要的部分,需要引起格外的重视. 数据血缘关系的概念 在人类社会中,血缘关系是指由婚姻或生育而产生的人际关系.如父母与子女的关系,兄弟姐妹关系,以及由此而派生的其他 ...

  9. 用python画漂亮图-使用 Python/matplotlib 画出漂亮的论文插图

    论文中画出各种绚烂的插图,都是用一些什么样的软件画出来的.本文介绍 Python 的绘图模块 matplotlib: Python plotting.适用于从 2D 到 3D,从标量到矢量的各种绘图. ...

最新文章

  1. C#Dictionary源码
  2. 河南省住建厅调研新郑智慧城市建设 市民享受服务便利
  3. Dynamics CRM2013 任务列表添加自定义按钮
  4. JSP自定义标签 函数,实现生日计算年龄
  5. 2019第十届蓝桥杯C/C++ B组省赛 —— 第四题:数的分解
  6. web service security profile的设计
  7. gridview实现分页
  8. 前向验证对于模型的更新作用
  9. 有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,
  10. 2016.03.18 近日买房以及学习事项
  11. Postman 如何处理上一个接口返回值作为下一个接口入参?
  12. 如何成为一名游戏设计师
  13. 李宏毅机器学习——无监督学习(四)
  14. 基于Linux的防火墙不安全
  15. Mac镜像创建方法简介
  16. 【Linux operation 18】 - SUSE 12 SP5在线安装Docker
  17. 数据库基础-update语句详解
  18. 学习笔记 Tianmao 篇 RecyclerView.Adapter 的封装
  19. chm打开秒退_Mac_Mac电脑程序无响应怎么办?Mac程序无响应解决方法,虽然Mac电脑一向以运行稳定、 - phpStudy...
  20. 360浏览器如何调试html,360js是什么?360浏览器如何调试js?

热门文章

  1. Unix/Linux Command Reference
  2. nyoj 309 bobsledding 即河南省第四届大学生程序设计大赛第七题
  3. mysqldump 导入导出数据
  4. HDU1240 POJ2225 Asteroids!【BFS】
  5. 《程序设计技术》第二章例程
  6. cmake 常见问题及解决
  7. 视频、画面、语言、文字与脑海、心灵
  8. 中英文对照 —— 英语语法与文法概念
  9. utilities(matlab)—— l2row/l2col
  10. Tricks(三十八)—— 在不计算欧式距离的前提下判断点到两点的距离哪个更近