案例数据:
- * Example generated by -dataex-. To install: ssc install dataex
- clear
- input double id str6 city double(year gdp)
- 1 "南京" 1990 2
- 1 "南京" 1991 3
- 1 "南京" 1992 4
- 1 "南京" 1993 5
- 1 "南京" 1994 6
- 1 "南京" 1995 7
- 2 "北京" 1991 5
- 2 "北京" 1992 6
- 2 "北京" 1993 7
- 2 "北京" 1994 8
- 2 "北京" 1995 9
- 3 "天津" 1991 1
- 3 "天津" 1992 2
- 3 "天津" 1993 3
- 3 "天津" 1994 4
- 3 "天津" 1995 5
- 4 "上海" 1991 4
- 4 "上海" 1992 5
- 4 "上海" 1993 7
- 4 "上海" 1994 8
- 4 "上海" 1995 9
- end
第一种方案:
- ****直接按id做xtline******
- xtset id year
- xtline gdp
效果如下:
我们发现虽然图形顺序达到了我们的要求,但各子图标题为数值。
第二种方案:
- ****加i(city)选项******
- xtset id year
- xtline gdp,i(city) t(year)
效果如下:
此方案虽然得到了子标题,但排序不是我们想要的,我们想要的顺序为南京、北京、天津、上海。
第三种方案:
- ****定义值标签******
- label define city_label 1 "南京" 2 "北京" 3 "天津" 4 "上海" //如果城市名太多,可采用循环
- label values id city_label
- xtset id year
- xtline gdp
最终效果如下:
第四种方案使用外挂指令labmask(极力推荐):
- ***使用labmask*******
- **ssc install labmask
- xtset id year
- labmask id,values(city)
- xtline gdp
最终效果如下:
哇,终于得到了我们想要的图形顺序!这条命令应该是目前解决xtline排序最简洁的方案,请使用第四种方案,解决了困扰很多人的xtline排序问题。
如果你还有更简洁的方式,可以在下方留言讨论。如果您觉得有用的话,点个赞,评一下分,谢谢!
最后,如果我们希望将所有line画在一幅图里,该怎么办呢?方法很简单,只要加一个option选项即可。
- xtset id year
- labmask id,values(city)
- xtline gdp,ov scheme(s1color)
效果如下:


雷达卡







京公网安备 11010802022788号







