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

17 篇文章 4 订阅
11 篇文章 3 订阅

今天我们来介绍使用基于Tikzpgfplots宏包绘制堆叠图、折线图和误差线的组合图形。
在这里插入图片描述

作图分析

本图的难点在于:

  • 堆叠柱形图属于 ybar stacked类型的图,而折线图和误差线作图是另一种类型的图,当坐标系设置中有ybar stacked,键值时,pgfplots会将折线图的数据化成矩形堆叠上去,而不是画成线型图。

  • 解决方案是分别在两个坐标系中作图,pgfplots会将后面的图叠加到先作的图上,这就是“图层”的机制。两个坐标系的设置也是一个难点,它们的设置要相同,这样才不会出现坐标系不重合的情形。

  • 堆叠图的画法在前一篇推文中,已经做了详细介绍,下面只讲误差线的画法。

折线图+误差线的画法

首先解释一些关于误差的概念:
我们通过实验得到的观察值 ( x , y ) (x,y) (x,y)和真值 ( x ′ , y ′ ) (x^\prime,y^\prime) (x,y)之间往往有有一个差值,我们常常给出一个误差范围来描述观察值的精确程度。观测值与真值之差的绝对值的上界叫做绝对误差,记作 ϵ \epsilon ϵ.
∣ x − x ′ ∣ ≤ ϵ x , ∣ y − y ∣ ≤ ϵ y |x-x^\prime|\le \epsilon_x, |y-y|\le \epsilon_y xxϵx,yyϵy

绝对误差占真值的绝对值的比率的上界则称为相对误差:

∣ x − x ′ ∣ ∣ x ′ ∣ ϵ x , ∣ y − y ′ ∣ ∣ y ′ ∣ ≤ ϵ y \frac{|x-x^\prime|}{|x^\prime|}\epsilon_x, \frac{|y-y^\prime|}{|y^\prime|}\le \epsilon_y xxxϵx,yyyϵy

如何在图形上呈现观测点的误差呢?以 y y y坐标为例,只需要在观测点 ( x , y ) (x,y) (x,y)处画一条从点 ( x , y − ϵ y ) (x,y-\epsilon_y) (x,yϵy)到点 x , y + ϵ y x,y+\epsilon_y x,y+ϵy的线段即可。

本图中数据表Total中给出了三列值,第一二列是 ( x , y ) (x,y) (x,y)的取值,而第三列就是 y y y值的绝对误差。

画误差线的代码只有下面一行:

 \addplot+[red!90!black,mark=none]plot [
error bars/.cd,
y dir=both, y explicit,
] table [y error=error] {yEr.dat};
\end{axis}
  • [red!90!black,mark=none]中选项说明折线的颜色和标记;
  • [error bars/.cd,y dir=both, y explicit,]中第一个键是对数值的设置,y dir=both的含义是显示完整的误差线,另外两种选择:y dir=plusy dir=minus分别只显示误差线的上半部分和下半部分。y explicit,是为每个观测值指定误差范围,相反地,y fixed=0.1是为所有的观测值指定一个统一的、不变的误差值。
\begin{tikzpicture}
\begin{axis}[
legend style={at={(0.5,-0.20)},
anchor=north,legend columns=-1},
ylabel={C(\textup{$\mu$g}\ \textup{g}$^{-1}$)},
symbolic x coords={bDec,Dec, Jan, Feb, Mar,
Apr, May, Jun, Jul, Aug, Sep, Oct, Nov,aNov},
xtick=data,
x tick label style={rotate=45,anchor=east},
xlabel={Month},
ymin=0,ymax=3500,
xmin=bDec,xmax=aNov
]
  \addplot+[red!90!black,mark=none]plot [
error bars/.cd,
y dir=both, y explicit,
] table [y error=error] {yEr.dat};
\end{axis}
\end{tikzpicture}

合成一张图

将堆叠图和折线+误差线图放在同一个tikzpicture环境中,就能将它们合成为一幅图了,注意要将堆叠图放在前面,折线图+误差线图放在后面,否则会出现折线图被遮挡的意外效果哟!

得到的成图如下:
在这里插入图片描述

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

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

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值