Stata中twoway bar图如何按数值调整条形前后显示顺序?
解决Stata双变量年度条形图遮挡问题:让数值较小的条形前置
要实现每年将数值较小的条形置于前方且不使用透明度,可以通过拆分数据分组绘制的方式实现,核心思路是对每个年份分别判断两个变量的大小,让数值大的条形先画(处于底层),数值小的后画(处于上层)。
具体实现步骤
拆分绘制条件
直接在twoway bar中通过if条件区分两种场景:- 当
Apples大于等于Melons时,先画Melons(底层),再画Apples(上层) - 当
Melons大于Apples时,先画Apples(底层),再画Melons(上层)
- 当
完整命令示例
twoway bar Melons year if Apples >= Melons, col(forest_green) lc(black) || /// bar Apples year if Apples >= Melons, col(cranberry) lc(black) || /// bar Apples year if Melons > Apples, col(cranberry) lc(black) || /// bar Melons year if Melons > Apples, col(forest_green) lc(black) ||, /// legend(order(2 "Schools" 1 "Churches")) /// 指定图例对应正确类别,合并重复项 ytitle("Apples/Melons count")
补充说明
- 命令通过
if拆分四组绘制逻辑,确保每个年份都是数值大的条形被压在下方,小的条形显示在上方 legend(order(...))参数用来避免重复图例项,这里2对应Apples(Schools),1对应Melons(Churches)- 若需调整数值相等年份的显示优先级,只需将
>=改为>,并对应调整if条件的绘制顺序即可
内容的提问来源于stack exchange,提问作者Ele
相关产品推荐
相关产品推荐

