三组散点实验数据,彼此相差不大,如何对比它们的差异呢?我们来看一幅来自文献的图:

作者别处心裁地将它们画在三维空间的三个平行的平面上,每个平面设置了三种不透明颜色,六条曲线设置不同的颜色、标注,图形下方有图例,看上去赏心悦目。

如何重构这样一幅漂亮的图呢?谭编使用Origin完美重构了此图(见下图):

今天我们来用LaTex宏包pgfplots(基于Tikz的宏包)来重新绘制这幅图。

1. 输入实验数据,作出初步的图形

\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepgfplotslibrary{colormaps}
\usetikzlibrary{pgfplots.groupplots,matrix
}\pgfplotsset{width=7cm,compat=1.17}\begin{document}\begin{tikzpicture}
\begin{axis}\addplot3[smooth,very thick,red!70!black,mark=triangle*,mark size=4pt] coordinates {(2.8,1000,-3) (2.9,1000,-3.2) (3,1000,-3.5)(3.1,1000,-3.8)(3.2,1000,-4.3)(3.3,1000,-4.9)(3.4,1000,-5.4)};\label{plots:plot1}\addplot3 [smooth,very thick,red!80!black,mark=pentagon,mark size =4pt]coordinates {(2.8,1000,-2.3) (2.9,1000,-2.5) (3,1000,-2.8)(3.1,1000,-3.1)(3.2,1000,-3.6)(3.3,1000,-4.2)(3.4,1000,-4.7)};\label{plots:plot2}\end{axis}\end{tikzpicture}
\end{document}

上面的代码看上去很复杂,其实关键的只有一句:

\addplot3[smooth,very thick,red!70!black,mark=triangle*,mark size=4pt] coordinates {(2.8,1000,-3) (2.9,1000,-3.2) (3,1000,-3.5)(3.1,1000,-3.8)(3.2,1000,-4.3)(3.3,1000,-4.9)(3.4,1000,-5.4)};\label{plots:plot1}

用它来录入数据, 其语法为

\addplot3[图形设置]coordinates {(三维坐标1),(三维坐标2),...(三维坐标n)}

得到的图形为:

看上去挺low,是不是? 别急,等下我们在打扮打扮就漂亮了!俗话说得好,“三分长相,七分打扮”嘛!

继续按照上面的方法加入其它两组数据。

2. 增加半透明平面

只需要在每组数据所在的位置画一个平面,设置颜色为半透明即可, 例如红色的平面:

\addplot3 [fill=red!30,draw=red!30,opacity=0.6]coordinates {(2.75,1000,-6.2) (3.45,1000,-6.2) (3.45,1000,-2.2)(2.75,1000,-2.2)(2.75,1000,-6.2)};

得到的图形为:

3. 设置坐标系

我们需要为z轴增加一些刻度,为三个坐标轴增加说明文字,这些只需要在\begin{axis}[]的中括号中加一些键值就可以了:

\begin{axis}[
view={40}{30},
legend cell align=left,
height=15cm,
width=13.5cm,
%xmin=2.8,xmax=3.4,
xtick={2.8,2.9,...,3.4},
zmin=-6.2,zmax=-2.2,
ztick={-6,-5.5,...,-2},
grid=major,
xlabel=$1000\ T^{-1}/K^{-1}$,
ylabel=Molecular weight /g mol $^{-1}$,
zlabel=$\log \sigma / \textup{S}\ \textup{cm}^{-1}$,
label style={sloped},
]

4. 设置图例

我们将图例放在图形正下方,

\matrix[matrix of nodes,anchor=south,draw,inner sep=0.2em,]at(6,-2.5){\ref{plots:plot1}& PGEDA-400 &[10pt]\ref{plots:plot2}& PEGDE-PEGDA-400\\\ref{plots:plot3}  & PGEDA-700&[10pt]\ref{plots:plot4} & PEGDE-PEGDA-700\\\ref{plots:plot5} & PGEDA-1000&[10pt]\ref{plots:plot6} & PEGDE-PEGDA-1000\\};

如果不喜欢图例外面的边框,也可以去掉它。最后得到的图形为:

大家注意比较一下使用pgfplots宏包作出来的图与原来的文献图,我们的优势是图中的文字、公式的字体与LaTeX的字体完全一致,非常和谐!使用pgfplots作出来的图与文章中的文字完美融合,非常好看!

学习Tikz作图虽然有一定难度,但是从效果来说还是值得我们花时间去学习的!

【LaTeX微信交流加群:】

如果你希望交流LaTeX使用或者TikZ作图或者Beamer制作幻灯片方面的问题,请先添加作者微信:niltxz,然后加入作者的LaTeX+TikZ+Beamer 交流微信群。

扫描识别下面二维码,关注Tikz绘图公众号大哉数学之为用,获取更多教程、模板!

Tikz作图教程:pgfplots宏包—三维数据散点图,完美重构文献美图相关推荐

  1. Tikz 作图教程:pgfplots 宏包三维数据的可视化绘图

    前一篇推文讲解了使用pgfplots 宏包导入二维数据和可视化绘图的方法.今天我们来介绍一下科研工作者常常用到的三维数据的导入与绘图的方法. 当一个函数关系式中出现了两个自变量时,我们需要用空间曲面来 ...

  2. Tikz作图教程:pgfplots宏包二维数据可视化的数据导入方法

    pgfplots 绘图思想简介 下面一段介绍来自pgfplots说明文档的引言部分,它对pgfplots的绘图思想作了清晰地描述: 科研工作者在交流研究结果.论文时,将数据可视化往往是必要和方便的. ...

  3. Tikz作图教程:堆叠柱形图+折线图+误差线

    今天我们来介绍使用基于Tikz的pgfplots宏包绘制堆叠图.折线图和误差线的组合图形. 作图分析 本图的难点在于: 堆叠柱形图属于 ybar stacked类型的图,而折线图和误差线作图是另一种类 ...

  4. Tikz作图教程:如何画流程图?——从一个简单的例子谈起

    今天我们来谈谈如何画流程图.广义的流程图是指流经一个系统的信息流.观点流或部件流的图形代表. 流程图主要由两种元素构成:文本框和连接线段(通常带有箭头).Tikz画这两类元素的工具是node和--线段 ...

  5. Tikz作图教程:图论中环的画法

    Tikz作图教程:图论中环的画法 今天我们来介绍基于Tikz的图论图形绘制宏包:tkz-graph.学会三个基本作图命令和若干选项参数,就能非常方便地绘制各种图论中的图形. 一个图里面有三类要素:顶点 ...

  6. TikZ作图教程 | 平面几何篇01——中小学数学老师的好帮手

    作者:Daniel 时间:2020年6月9日 Karl是一名中学数学老师,他担任学校数学组组长.学期快结束了,他现在正在准备出一套年级期末考试试卷. 作为一名数学老师,每年要准备各种数学文档--电子讲 ...

  7. Tikz作图教程:动手 VS 动脑? 97行代码 VS 6行代码?

    在学习Tikz的过程中,当我们对基本代码有一定熟悉之后,作图思路就是更重要的事情了.本文借一个例子谈谈作图思路的问题. 昨天在网上看到这样一幅图形: 看上去挺复杂的一个图,心里琢磨如果用Tikz来画, ...

  8. TikZ作图教程:图论篇—树图的绘制

    作者:Daniel 时间:2020年6月4日 本文介绍一个简单树图的绘制方法,领悟其中的思路以后,举一反三就可以画出更复杂的图了. 前一篇文章介绍了Tikz作图的优点:专业.精致.与LaTeX完美融合 ...

  9. Tikz作图教程:两个漂亮的示意图,兼谈 Tikz 中的文本框——node 的高级用法

    先上两个漂亮的示意图: node是Tikz绘图中的一个非常重要的概念.我们可以用它给图形元素添加标签,绘制图的顶点,绘制流程图中的文本框等等. 那么,什么是node呢?pgfmanual中的解释是: ...

最新文章

  1. python语言程序设计嵩天-python语言程序设计基础(嵩天版),第二章程序练习题...
  2. Hessian Web Service C# 示例
  3. 模拟栈 java_Java 模拟栈结构
  4. js整体缩小网页_妙用JavaScript实现网页的任意缩放
  5. android 遮罩 进度条,bootstrap创建带遮罩层的进度条
  6. Qt中QString、int、char、QByteArray、std::string【八大转换】
  7. C++ array vector 数组
  8. java抽组件,基于Java组件与基于请求的框架
  9. python加载机制_yui3与python模块加载机制感悟
  10. iphone7p配置参数详情_iPhone12系列最全的详细参数,参数党可以看看
  11. Revit综合软件【加强过滤】的使用方法
  12. C++ 数组array与vector的比较
  13. win10怎么将计算机放桌面壁纸,win10电脑系统怎么改变桌面壁纸的大小
  14. 中断、陷阱、软中断之间的异同
  15. 显卡维修之显存位置如何确认
  16. DXP出现Un-Routed Net Constraint报错的一种情况和解决方法
  17. 别把赌注压在明天:如何了解自己,提高自控力
  18. 腾讯云服务器如何使用Cloudreve 应用镜像搭建个人云盘?
  19. 论文阅读:HeadGAN: One-shot Neural Head Synthesis and Editing
  20. 电脑可以上网,但是所有网页都打不开的解决办法

热门文章

  1. [长安战疫-cazy] Web题解
  2. GSM模块联网 GPRS上传物联网云平台调试笔记
  3. jar包(依赖jar 运行jar)
  4. PP过滤器(螺纹式)操作说明书
  5. 微信自定义开发的一些问题的梳理
  6. 职场切记:没有苦劳,只有功劳!
  7. 5W字讲解最新大数据面试题
  8. Andorid去掉音量后面多余的图标
  9. linux nginx rpm 安装配置,Centos下安装nginx rpm包
  10. 安装markdownpad2过程中遇到this view has crashed 问题