科研工作者常常需要绘制堆叠柱形图来呈现同一维度中不同数据的差异。
所谓堆叠柱形图
是柱状图的变形,拥有更多维度的表现力。柱形图的最大特点就是一目了然、清晰可见
,而堆叠柱形图不仅可以清晰地比较某一个维度数据中不同类型数据之间的差异,还可以比较总数的差别
。
今天的推文我们详细介绍一下如何用基于Tikz
的宏包 pgfplots
来方便地绘制堆叠柱形图(stacked bar chart)。
准备数据
我们需要处理的数据共有六组,每组包含1月到12月共12个数据。见下表:
在这里插入图片描述
现在我们做6个数据文件,分别保存为cmp.dat, amp.dat, ump.dat, gmp.dat, imp.dat, xmp.dat
.
设置
- 导言区设置:调用
pgfplots
宏包及设置版本号、图片宽度
\usepackage{pgfplots}
\pgfplotsset{width=12cm,compat=1.17}
- 颜色设置:为了区分六组不同的数据,我们自定义六种颜色,体现在图形中就是同一个柱子将由六个不同颜色的矩形堆叠而成。
\definecolor{cmp1}{RGB}{0,129,218}
\definecolor{amp1}{RGB}{29,254,179}
\definecolor{ump1}{RGB}{62,254,94}
\definecolor{gmp1}{RGB}{194,254,0}
\definecolor{imp1}{RGB}{254,129,0}
\definecolor{xmp1}{RGB}{212,0,0}
上述颜色设置命令也放在导言区。
- 坐标系设置:作堆叠图的关键键值为
ybar stacked,
,放在\begin{axis}[ybar stacked]
的中括号中。
坐标系设置中另一个值得注意的是:我们的横轴用 DEC, JAN,...
等文字作为刻度说明,所以需要在\begin{axis}[ybar stacked]
中括号中填上一句命令:
symbolic x coords={Dec, Jan, Feb, Mar,
Apr, May, Jun, Jul, Aug, Sep, Oct, Nov},
绘图命令
绘图的关键命令只有一句:
\addplot+ [ybar,cmp1,draw=cmp1!60!black] table {CMP.dat};
\addplot+ table {CMP.dat}
将我们事先准备好的数据文件CMP.dat
读入并绘制柱子最底层的矩形。中括号的三个选项告诉pgfplots
柱子方向是平行于y
轴方向,填充颜色用我们定义好的cmp1
颜色,矩形框用这个颜色和黑色按照60:40
的比例混合得到的颜色。
用上述同样的命令依次导入其它五个数据文件:AMP.dat,UMP.dat,...
图例说明
制作图例的方法也很简单,只需下面的一句命令就可以了:
\legend{CMP, AMP, UMP, GMP, IMP, XMP}
我们设计了五套颜色方案,得到冷、暖各种不同色调的配色图形。
图形在文章呈现的效果如下:
学习Tikz作图虽然有一定难度,但是从效果来说还是值得我们花时间去学习的!
【LaTeX微信交流加群:】
1
如果你希望交流LaTeX使用或者TikZ作图或者Beamer制作幻灯片方面的问题,请先添加作者微信:niltxz,然后加入作者的LaTeX+TikZ+Beamer 交流微信群。
扫描识别下面二维码,关注Tikz绘图公众号大哉数学之为用,获取更多教程、模板!