什么?为什么只讲线形图?因为我只用过线形图… 言归正传,我的确只用过线形图(说了跟没说一样…)。Stata画图给我的感觉一直都是很复杂、很多命令,我觉得好像也没有很多的地方要画图,一般就画个线形图看看趋势,如果要画柱状图之类的,excel它不香吗?更多的涉及到经济学知识的像:安慰剂检验做1000次之后用回归系数画核密度图像,还有DID平行性趋势检验中用系数和置信区间画折线图以及RD中拟合曲线的断点图,已经不是普通画图的范畴,我们会在后面讲这些经济学方法的时候再具体讲。哦!我还用Stata画过地图!不过你们应该也用不到,我就不讲了。 滔滔不绝、强词夺理后,这章只讲线形图。
在进行画图前,大家最好将数据按即将画图的横坐标升序排一遍,不然可能图会挺乱的(可能是我太菜) 先来一段代码祭天:
* 把以前的数据清除,调用系统数据库 uslifeexp * sysuse uslifeexp, clear * 这一行才开始画图 * line le year //也可使用 twoway line le year这是stata里使用范例数据库进行画图,大家在自己stata中也可以直接运行。 line或 twoway line 就是我们的命令, 然后le(寿命)是纵坐标,year为横坐标。图为下面这样: 接下来,我们为上图加一些图例和常用的选项,这些为图附加的选项一般放在","后,就像我们说话有停顿一样,给软件说话也记得抑扬顿挫,不然它听不懂。下面我直接放图和代码,不解释应该看得懂。
line le year, title("这里放标题,记得加引号") subtitle("副标题") ytitle("纵坐标标题") xtitle("横坐标标题") note("注释:逗号后的选项,你想加的时候再放上来,没有需要就不加") tline(1955 , lp(dash) lc(black) ) tlabel(1955 , add labsize(*.75))大家可能觉得这行代码有点长, 但不要换行!用之前教的换行方法会报错!我也不知道为啥,有知道的小伙伴可以在评论区解释一下。 另外xlabel ylabel我没有讲,因为一般Stata会根据数据自动调整横纵坐标范围,所以我觉得没太必要。
多图并列(一页多图)使用命令combine,先把每张图做好后保存,然后使用combine 命令:
line le_male year, saving(male) line le_female year, saving(female) gr combine male.gph female.gph不论多少张图都先分开保存,再使用gr combine命令。如果想一张一排,分为两排,则加上选项row(),意思是要分为几排:
gr combine male.gph female.gph, row(2)细心的同学可能发现,这两条线的图例自动变成了"Life expectancy, male"和"Life expectancy, female",这是因为这两个变量名虽然是le_male,le_famale,但作者把变量的label给换过了,大家打开Data Editor(Browse),选中变量le_male可以看到它的label,然后可以使用上方菜单栏Edit mode进入编辑状态后进行label修改。 2. 同一个变量分类 如果我们的数据是同样一个变量既有控制组,又有对照组数据,想按两个组别进行画图。数据结构:
tw (line var1 time if iftreat==0,tline(2017q1 , lp(dash) lc(black) ) tlabel(2017q1 , add labsize(*.75))) /// (line var1 time if iftreat==1,title("标题")), /// legend(label(1 "控制组") label(2 "对照组") col(2))所以同一个变量则需要用tw 后用()分别写两个线形图的代码,写法与普通线形图一样,在逗号后加上两个组的图例。因为这里数据涉及到working paper,虽然文章不咋样,但因为有co-author,我不能擅自公布数据,所以大家就看代码理解一下。主要原理也是分别画出两条线,用tw ()合并在一起后,更改图例就完成! 这里大家发现我的代码还是换行了,因为我发现!这个换行在do-file里就可以用,在命令栏输入就要报错,就很奇怪(reg在命令栏换行就不会报错),不过如果大家在do-file里还是可以尽情换行~
References https://bbs.pinggu.org/thread-3002793-1-1.html http://blog.sina.com.cn/s/blog_7939a4ad0102uxoc.html Stata line官方文档