作者:刘潍嘉 (兰州大学)
邮箱:weijialiu99@163.com
编者按:本文整理自 asjadnaqvi/stata-bumpline 和 asjadnaqvi/stata-bumparea,特此致谢!
- Title: Stata绘图:凹凸线图与凹凸面积图-bumparea-bumpline
- Keywords: Bumpline Chart, 凸凹线图
1. 介绍
凹凸线图 (Bumpline Chart) 是一种折线图的变形,用于展示一组数据随时间产生的排名而非绝对值的变化。凹凸图的优点在于它不受数据集中数值大小差异的影响,可以产生均匀的排名折线。而标准折线图可能会因为某些数据项较高的数据值导致大量数据线集中在图表的底部,影响读者对数据值的观察。
- 优点:可以不受数据集中数值大小差异产生均匀的排名折线,方便我们对数据进行二维观察。
- 缺点:由于它强调排名的相对变化,而不是绝对值,因此可能不适合需要显示具体数值的情况。另外,在数据量很大的情况下,可能会导致图表变得混乱和难以解读。

凹凸面积图 (Bumparea Chart) 则是面积图的变形,用于展示一组数据随时间产生的排名和绝对值的变化。Bumparea Chart 也用于显示类似的趋势,但相对于 Bumpline Chart,它不仅考虑了排名的变化,还可同时显示相对大小的变化。它适用于比较多个组或类别的大小排名和数值变化。
- 优点:不仅突出了排名的变化,还能够显示组之间的相对大小变化。它能够提供更全面的信息,同时保留了排名变化的可视化效果。
- 缺点:可能在大数据集上变得混乱,尤其是在组数较多时。

2. 命令介绍
2.1 命令安装
. ssc install bumparea, replace
. ssc install bumpline, replace
. ssc install palettes, replace // 命令依赖
. ssc install colrspace, replace // 命令依赖
2.2 命令语法
2.2.1 bumpline
bumpline y x [if] [in], by(varname)
[top(num) select(any|last) smooth(num) palette(str) labcond(str) offset(num)
lwidth(str) labsize(str) xlabsize(str) ylabsize(str) xlabangle(str)
msymbol(str) msize(str) mcolor(str) mlcolor(str) mlwidth(str) mlabsize(str)
xlabel(str) xtitle(str) ytitle(str) title(str) subtitle(str) note(str)
ysize(num) xsize(num) scheme(str) name(str)]
其中,
bumpline y x, by(group)
:该命令需要一个数值型的 y 变量和一个数值型的 x 变量。通常情况下,x 变量是一个时间变量。by()
变量用于定义分组。top(num)
:在图表中显示的行数。默认选项为top(50)
。其他所有值都会被忽略。select(any|last)
:选项sel(any)
会为所有 x 轴类别选择top()
。这是默认选项,同时显示由by()
类别进入和退出top()
。选项sel(last)
会跟踪最后一个 x 轴类别的top()
路径。smooth(num)
:平滑参数,取值范围为 1 到 8。默认值为smooth(4)
。值为 1 时显示直线,值为 8 时显示几乎垂直的跃迁。palette(str)
:颜色方案的名称,可以是colorpalette
包中定义的任何命名方案。默认为tableau
。offset(num)
:扩展 x 轴范围以适应标签。默认值为offset(15)
,表示 xmax-xmin 的 15%。lwidth(str)
:区域轮廓线的线宽。默认为lw(0.8)
。labsize(str)
:by()
类别标签的大小。默认值为labs(2.2)
。mlabsize(str)
:位于中间的by()
类别标签的大小。默认值为mlabs(1.6)
。xlabsize(str)
:x 轴标签的大小。默认值为xlabs(2.5)
。ylabsize(str)
:y 轴标签的大小。默认值为ylabs(2.5)
。xlabangle(str)
:x 轴标签的角度。默认为xlaba(0)
,表示水平。msymbol(str)
:标记的符号。默认为msym(2.5)
。msize(str)
:标记的大小。默认为ms(2)
。mcolor(str)
:标记的颜色。默认为线条颜色。mlwidth(str)
:标记轮廓线的宽度。默认为mlwid(medium)
。mlcolor(str)
:标记轮廓线的颜色。默认为线条颜色。xtitle, ytitle, xsize, ysize
:这些是标准的twoway
图表选项。title, subtitle, note, name
:这些是标准的twoway
图表选项。scheme(string)
:加载自定义方案。可以使用上述选项对各个元素进行微调。
有关更多详细信息,请参阅帮助文件 help bumpline
。
2.2.2 bumparea
bumparea y x [if] [in], by(varname)
[top(num) dropother smooth(num) palette(str) labcond(str) offset(num)
alpha(num) lcolor(str) lwidth(str) percent format(fmt)
recenter(mid|top|bot) colorby(name) colorvar(var) colother(str)
xlabel(str) xtitle(str) ytitle(str) title(str) subtitle(str) note(str)
ysize(num) xsize(num) scheme(str) name(str) saving(str)]
其中,
bumparea y x, by(group)
:该命令需要一个数值型的 y 变量和一个数值型的 x 变量。通常情况下,x 变量是一个时间变量。by()
变量用于定义分组。top(num)
:在图表中显示的行数。默认选项为top(50)
。非top()
值将分组显示在一个“其他”类别中。dropother
:从图表中删除“其他”类别,仅显示top()
类别。smooth(num)
:平滑参数,取值范围为 1 到 8。默认值为smooth(4)
。值为 1 时显示直线,值为 8 时显示几乎垂直的跃迁。palette(str)
:颜色方案的名称,可以是colorpalette
包中定义的任何命名方案。默认为tableau
。alpha(num)
:区域填充的透明度。默认为alpha(80)
,表示 80% 的透明度。offset(num)
:扩展 x 轴范围以适应标签。默认值为 15,表示 xmax-xmin 的 15%。recenter(options)
:此选项更改图表重新居中的位置。默认选项为recenter(middle)
。其他选项包括recenter(top)
或recenter(bottom)
。为了简洁,还可以指定如下选项:middle = mid = m, top = t, bottom = bot = b
。percent
:显示by()
类别的百分比份额。默认为实际值。format(fmt)
:格式化by()
类别的值。实际值的默认格式为format(%12.0fc)
,百分比选项的默认格式为format(%5.2f)
。lwidth(str)
:区域轮廓线的线宽。默认为lw(0.2)
。lcolor(str)
:区域轮廓线的颜色。默认为lc(white)
。labsize(str)
:by()
类别标签的大小。默认值为labs(2.8)
。xlabsize(str)
:x 轴标签的大小。默认值为xlabs(2.5)
。xlabangle(str)
:x 轴标签的角度。默认为xlaba(0)
,表示零度或水平方向。xtitle, ytitle, xsize, ysize
:这些是标准的twoway
图表选项。title, subtitle, note, name
:这些是标准的twoway
图表选项。scheme(string)
:加载自定义方案。可以使用上述选项对各个元素进行微调。
有关更多详细信息,请参阅帮助文件 help bumparea
。
3. Stata 案例
绘图前,本文设置了绘图模板以美化图形,安装和设置命令如下,如无需求可以忽略。
. ssc install schemepack, replace //white_tableau 模板
. set scheme white_tableau //设定绘图风格为white_tableau
3.1 Bumpline Chart
. lxhuse owid_emissions_reduced.dta, clear
. drop if iso_code==""
. keep if year >= 2000
. bumpline total_ghg year, by(country) xsize(2) ysize(1)
. graph export "bumpline_ex01.png", width(2000) replace

3.2 Bumparea Chart
. lxhuse owid_emissions_reduced.dta, clear
. drop if iso_code==""
. keep if year >= 2000
. bumparea total_ghg year, by(country) dropother percent ///
> labs(2.5) xlabsize(2.5) xsize(2) ysize(1.1) xlabangle(40)
. graph export "bumparea_ex01.png", width(2000) replace

4. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 绘图, m
安装最新版lianxh
命令:
ssc install lianxh, replace
- 专题:Stata绘图
- Stata绘图:balanceplot-系数可视化之平衡性点图
- Stata绘图:精美的散点图和线性拟合图-scatterfit-slopefit
- Stata绘图:balanceplot-图示组间差异和平衡性
- Stata绘图:正负异色柱形图-marimekko
- 值得收藏!三个Stata可视化绘图网站
- Stata绘图:一套高效绘图命令-plottabs
- Stata绘图:散点与分组密度函数图
- Stata绘图:相关系数可视化
- Stata绘图:spider-绘制蜘蛛网图-雷达图
- Stata绘图:绘图模板介绍-cleanplot
- Stata绘图:为图形选择优美的配色方案-color_style
- Stata绘图:circlepack-绘制圆堆图
- Stata绘图:COVID-19数据可视化
- Stata绘图:唯美的函数图-自定义水平附加线和竖直附加线
- Stata绘图:复现组间均值差异图
- Stata绘图:sunflower-向日葵图-克服散点重叠
- Stata绘图:环形柱状图-实时全球新冠确诊人数
- Stata绘图:绘制二维地图
- Stata绘图:峰峦图绘制 joy_plot
- Stata绘图:绘制华夫饼图-waffle
- Stata绘图:绘制美观的散点图-superscatter
- Stata绘图:回归系数可视化-multicoefplot
- Stata绘图:如何更高效的绘制图形
- Stata绘图:绘制桑基图-sankey_plot
- Stata绘图-可视化:组间差异比较散点图