我使用*.gph
加载了Stata graph use
图表文件。
我想加载图表并在图表中添加x = 123的垂直参考线。
我无法从文档中找到是否可以在不使用图形编辑器的情况下执行此操作。 (我需要处理200多个图表,参考线的值因每个图表而异。)
编辑:我的意思是“添加参考线”,而不是“询问参考线”。
答案 0 :(得分:2)
在制作图表时添加线条似乎要容易得多,所以如果可能的话那么。如果没有,您可以通过检查图形编辑器的执行方式来执行此操作(如果您记录更改,则可以在打开保存的记录时看到所需的代码,并通过向代码添加gr.edit
来使用它)。为此,您需要将所有具有唯一名称的图形放在目录中,如果可以查找这些图形,并在下面的代码中使用数据文件(在代码中称为graph_info_file.dta),并在图表中包含这些变量的信息:
graphname X1 X2 Y1 Y2
是graphname是一个带有图形名称的字符串变量(即graph1.gph,foreign.gph等),X1和Y1是图形开始的坐标(在你的例子中X1 = 123,Y1 = 0)和X2和Y2是线结束的坐标(直线是X2 = 123,Y2 =你的最大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
}
*
请注意,本地宏在此处不起作用,因此必须使用全局宏。通常不建议这样做。如果要保存/导出图形,只需在循环结束时添加相关代码即可。
另请注意,图形编辑器代码与通常的图形语法不同,更难以理解,也没有很好地记录,这通常会导致复制代码而不了解其功能,这会导致各种错误(通常非常困难)识别和修复)。