我使用*.gph
加载了一个Stata graph use
图形文件。
我想加载图表,并在x=123上添加一条垂直的参考线到图中。
我无法从文档中找到在不使用图形编辑器的情况下是否有可能做到这一点。(我需要处理200+图,每个图的参考线的值都是不同的。)
编辑:我的意思是“添加参考行”,而不是“询问参考行”。
发布于 2015-03-24 03:33:58
在生成图形时,添加行似乎要容易得多,因此,如果可能的话,可以使用。如果不是,您可以通过检查图形编辑器是如何做到的(如果您记录了更改,您可以看到打开保存的记录时所需的代码,并通过向代码中添加gr.edit
来使用它)。为此,您需要将所有具有唯一名称的图形放在目录中(如果可以查找它们),并将数据文件(在下面的代码中称为graph_info_file.dta )中包含这些变量的图表的信息:
图形名X1 X2 Y1 Y2
如果图形名是一个字符串变量,其名称为图(即图1.gph、foreign.gph等),X1和Y1是图形开始的坐标(在您的示例中是X1=123、Y1=0),X2和Y2是直线结束的坐标(直线为X2=123,Y2=your max Y值)。
graph dir *, gph
local graphlist = r(list)
di "`graphlist'"
use "graph_info_file.dta", clear
quietly foreach graph in `graphlist' {
noisily di "`graph'"
graph use `graph'
summarize X1 if graphname=="`graph'"
global x1 = r(min)
summarize X2 if graphname=="`graph'"
global x2 = r(min)
summarize Y1 if graphname=="`graph'"
global y1 = r(min)
summarize Y2 if graphname=="`graph'"
global y2 = r(min)
gr_edit .plotregion1.plotregion1[4].AddLine added_lines editor $x1 $y1 $x2 $y2
gr_edit .plotregion1.plotregion1[4].added_lines_new = 1
gr_edit .plotregion1.plotregion1[4].added_lines_rec = 1
gr_edit .plotregion1.plotregion1[4].added_lines[1].style.editstyle linestyle( width(thin) color(black) pattern(solid)) headstyle( symbol(circle) linestyle( width(thin) color(black) pattern(solid)) fillcolor(black) size(medium) angle(stdarrow) backsymbol(none) backline( width(thin) color(black) pattern(solid)) backcolor(black) backsize(zero) backangle(stdarrow)) headpos(neither) editcopy
*add code for saving/exporting graphs here
}
*
请注意,本地宏在这里不工作,因此必须使用全局宏。一般不建议这样做。如果要保存/导出图表,只需在循环结束时添加相关代码即可。
还要注意的是,图形编辑器代码与通常的图形语法不同,更难理解,而且文档也不是很清楚,这通常导致复制代码而不了解其功能,从而导致各种错误(这些bug通常很难识别和修复)。
https://stackoverflow.com/questions/29172950
复制