Graph Stata:在后验图中添加一条参考线

Graph Stata:在后验图中添加一条参考线,graph,stata,Graph,Stata,我使用graph use加载Stata*.gph图形文件 我想加载图表,并在图表中添加一条x=123的垂直参考线 我无法从文档中找到是否可以在不使用图形编辑器的情况下执行此操作。(我需要处理200多个图形,每个图形的参考线值都不同。) 编辑:我的意思是“添加参考线”,而不是“询问参考线”。在制作图形时添加参考线似乎要容易得多,所以如果可能的话可以这样做。如果没有,您可以通过检查graph editor的操作方式来完成(如果您记录了更改,则可以在打开保存的录制时看到所需的代码,并通过将gr.edi

我使用
graph use
加载Stata
*.gph
图形文件

我想加载图表,并在图表中添加一条x=123的垂直参考线

我无法从文档中找到是否可以在不使用图形编辑器的情况下执行此操作。(我需要处理200多个图形,每个图形的参考线值都不同。)


编辑:我的意思是“添加参考线”,而不是“询问参考线”。

在制作图形时添加参考线似乎要容易得多,所以如果可能的话可以这样做。如果没有,您可以通过检查graph editor的操作方式来完成(如果您记录了更改,则可以在打开保存的录制时看到所需的代码,并通过将
gr.edit
添加到代码中来使用它)。为此,您需要将所有具有唯一名称的图形放在一个可以查找的目录中,以及一个数据文件(在下面的代码中称为graph_info_file.dta),其中包含关于具有以下变量的图形的信息:

图名称X1 X2 Y1 Y2

WARE 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

}
*
请注意,本地宏在此不起作用,因此必须使用全局宏。通常不建议这样做。如果要保存/导出图形,只需在循环末尾添加相关代码


还要注意的是,graph editor代码与通常的graph语法不同,更难理解,文档也不太完整,这通常会导致复制代码而不了解其功能,从而导致各种错误(通常很难识别和修复).

据我理解,这是不可能的。这是一个非常好的答案。这并没有遵循OP的规定,即不使用图形编辑器,但我认为这是唯一的方法。此外,您假设数据是可访问的,这似乎不是事实。这是真的。我假设OPs的意思是不必使用图形Edi为每个图形手动输入tor,但需要指出我从何处获得gr_编辑代码,以防OP或其他人想要执行其他操作。还假设参考线的数据可用,如果不可用,则需要手动键入所有坐标(但imho仍然比手工编辑200多张图表要好).的确如此。我赞扬并提升了你的帖子,因为我认为它对其他人可能非常有用。我推测OP希望将图形文件拉入Stata,并使用
graph
命令更改它们。正如我简短地评论的那样,我认为这是不可能的。另请参阅OP的上一个问题。