三组散点实验数据,彼此相差不大,如何对比它们的差异呢?我们来看一幅来自文献的图:
作者别处心裁地将它们画在三维空间的三个平行的平面上,每个平面设置了三种不透明颜色,六条曲线设置不同的颜色、标注,图形下方有图例,看上去赏心悦目。
如何重构这样一幅漂亮的图呢?谭编使用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
绘图公众号大哉数学之为用
,获取更多教程、模板!