教程 | 如何获取未知Stata 图形的绘制 code?

教程 | 如何获取未知Stata 图形的绘制 code?

在 Stata 进行实证的时候,可视化是一个关键步骤。如果你没有保存相关 code 的习惯,建议你重新阅读之前的推文(Stata Coding Guide)。

但是在习惯养成之前,我们已经做了大量实证,输出了大量的实证图表📈。其中表格一般可以直观地获得输出命令信息,但对于图形,特别是一副相对复杂的图形,很难从图形中获取当初写的 code 全貌。

当你想复刻或者修改之前的图形,却又无法找到相关的命令信息,该怎么办?

如果你的图形是以 Stata 的 .gph 格式保存,那么接下来介绍的方法就可以方便得帮你找回你当初绘制图形的 code。

我们以较为复杂的图形实例🌰进行演示:

图形示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* y-value for top of shaded area                  */  local yv .2        
/* first x-value */ local x1 10
/* second x-value */ local x2 15
/* color of bidirectional arrow; "none"=no arrow */ local ac "orange"
/* thickness of bidirectional arrow */ local aw 1.5
/* shading opacity %; 0=transparent */ local ps 25

tw (scatteri `yv' `x1' `yv' `x2', ///
recast(area) col(gs10%`ps') lw(0)) ///
(fun y=gammaden(6,1,0,x), lp(solid) ra(0 20) ///
plotr(marg(zero)) graphr(col(white)) xla(0(2)20) ///
xti(" " "x") leg(off) lc(ebblue) lw(*2.5) ///
xli(`x1' `x2', lc(gs8) noex) yti("f(x)", ///
orient(hor)) yla(,ang(360))) ///
(pcarrowi .075 `x1' .075 `x2', msi(`aw') ///
lw(*`aw') mlw(*`aw') mlc("`ac'") lc("`ac'") ///
recast(pcbarrow) text(.09 12.5 "(some x-window" "of interest)"))
gr save graph.gph,replace

iShot2020-05-2014.06.30

找回 code

假如你没有保存以上的代码,那么事后如何重新绘制呢?

不用担心,接下来分别提供命令法、编辑器法来让帮助你找回遗失的 code。

1. 命令法

Stata 针对 .gph 图片提供了 gs_fileinfo 命令来获取图形的信息,其中就包含了绘制该图形的 code,让我们演示一下如何找回前面 graph.ghp 的绘制代码:

1
2
gs_fileinfo graph.gph
di r(command)

上面第一条命令在 Stata 窗口不会出现任何输出,但图形的相关信息已经被保存在 macros 中,需要用 display 命令显示出来(下图)。当然我们也可以用 return list 查看 gs_fileinfo 保存的所有返回值。

iShot2020-05-2013.57.29

从输出结果可以看出,我们之前的命令已经被提取出来,复制出来调一下格式又可以愉快的出图了!

2. 编辑器法

这个方法更简单了,用文本编辑器打开 graph.gph 文件,即可看到相关的文件信息,其中也包含了制图的 code ,是不是更加 easy?

这里演示一下用 Sublime Text 编辑器打开的显示结果:

iShot2020-05-2014.05.14

可以看到图形中,不仅包含了命令,还有制图时间,图形类型等信息。通过以上找回.gph 图形绘制命令的操作,说明以后不用单独发送 .do 文件给学生啦!!

# Stata

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×