Stata标注技巧:用for循环批量画图,标注相应文字 您所在的位置:网站首页 循环图片怎么做出来的视频 Stata标注技巧:用for循环批量画图,标注相应文字

Stata标注技巧:用for循环批量画图,标注相应文字

2024-07-13 08:09| 来源: 网络整理| 查看: 265

1.引言

如题,想用for循环批量输出结果,输出标题/label一般暂时使用数值,但结果不太直观。如何将数值对应的文字作为label或title?

我们考虑以下场景,hy2是国民经济行业分类代码。现在想要绘制每一个行业的出口额的时间趋势图。

hy2hy中文名hy2hy中文名13农副食品加工业29橡胶和塑料制品业14食品制造业30非金属矿物制品业15酒、饮料和精制茶制造业31黑色金属冶炼和压延加工业16烟草制品业32有色金属冶炼和压延加工业17纺织业33金属制品业18纺织服装、服饰业34通用设备制造业19皮革、毛皮、羽毛及其制品和制鞋业35专用设备制造业20木材加工和木、竹、藤、棕、草制品业36汽车制造业21家具制造业37铁路、船舶、航空航天和其他运输设备制造业22造纸和纸制品业39计算机、通信和其他电子设备制造业23印刷和记录媒介复制业40仪器仪表制造业24文教、工美、体育和娱乐用品制造业41其他制造业25石油、煤炭及其他燃料加工业42废弃资源综合利用业26化学原料和化学制品制造业43金属制品、机械和设备修理业27医药制造业44电力、热力生产和供应业28化学纤维制造业45燃气生产和供应业

我们要做的是:将贸易额回归至时间虚拟变量上,考察lnv的时间趋势,使用如下命令

回归命令 *****回归***** capture{ forv i = 13/45{ reghdfe lnv i.year if hy2 == `i', noa vce(r) eststo fit`i' } } 画图命令 *****画图***** forv i = 39/45{ #d ; coefplot (fit`i',c(l) label("行业`i'") lp(dash) lc(black) mc(black) ms(smcircle_hollow) offset(-0.07)) , vertical drop(_cons) byopts(xrescale) xlabel(1 "2008" 2"2009" 3"2010" 4"2011" 5"2012" 6"2013" 7"2014" 8"2015") graphregion(color(white)) legend(size(small) col(3)) ; #d cr graph export "C:\Users\Allen\Desktop\output_temp\hy`i'.png", as(png) name("Graph") replace }

如果直接循环绘制时间趋势图,得到如下图结果。发现label是数字,不太直观。 循环结果——数字标注(不直观)

我们想要用中文标注:结果如下 循环结果——文字标注(直观)

如何把数字对应的行业”文字“作为label加到图中?

2.数据处理过程 (1)使用标量储存行业代码和行业名称

在这里插入图片描述

preserve keep hy2* duplicates drop hy2,force global length = _N forv i = 1/$length { local j = hy2 in `i' su hy2 in `i',d sca int`j' = r(mean) sca s`j' = hy2_name in `i' } restore

生成了标量s13~s45 用于储存行业代码编号 生成了标量int13~int45 储存行业代码名称

执行上述代码,sca list得到如下结果 在这里插入图片描述 在这里插入图片描述

(2)记录行业代码的首尾 su hy2,d global lower_hy2 = r(min) su hy2,d global upper_hy2 = r(max)

在这里插入图片描述

(3)循环回归,并保存结果 forv i = $lower_hy2/$upper_hy2{ cap reghdfe lnv i.year if hy2 == `i', noa vce(r) cap eststo fit`i' } (4)循环画图 forv i = $lower_hy2/$upper_hy2{ cap local hy = int`i' cap local gamma = s`i' capture{ #d ; coefplot (fit`i',c(l) label(`hy':`gamma') lp(dash) lc(black) mc(black) ms(smcircle_hollow) offset(-0.07)) , vertical drop(_cons) byopts(xrescale) xlabel(1 "2008" 2"2009" 3"2010" 4"2011" 5"2012" 6"2013" 7"2014" 8"2015") graphregion(color(white)) legend(size(small) col(3)) ; #d cr graph export "$path_output\hy`i'_`gamma'.png", as(png) name("Graph") replace } }

由此,我们就得到了中文label的时间趋势图 循环结果——文字标注(直观)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有