添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

哈喽,诸君安。自从我们公众号推出有问必答栏目,陆陆续续有很多朋友向我们投来自己的问题。我们本着有问必答的态度,认真对待每一个问题,并及时帮大家答疑解惑。近日,又有一位朋友提出一个问题,问题是酱婶的:

这是一个stata的作图问题,他要绘制 1978-1996 年全国不同省份大豆收购量和时间关系。

例如:

上图是吉林省1978-1996年大豆收购量的关系图。但是注意到左边 y 轴刻度是以 20 为起点,终值为 100 ,现在问题是想让左边 y 轴起点从 0 开始,终点到该省大豆收购量最大值结束。但是每个省大豆收购量最大值是不同的;若修改的话只能每个省手动修改,这样耗时费力,还有可能出现错误。怎么办呢?接下来小编就带你解决这个问题。

鉴于没有提问者的数据,小编找了一个类似的面板数据进行解答,数据已放入百度云(http://pan.baidu.com/s/1kVAtimz),读者可自行下载。

clear

set more off

use d:/question_exam


这是一个非平衡的面板数据,为了方便观察,笔者选择了4个地区一段时间内的 GDP

数据有了,接下来对数据进行处理,我们的目的是把每个地区GDP的最大值作为 y 轴的终值,那么首先我们要找出每个地区 GDP 的最大值。

程序如下:

sort country year

by country: gen id=(_n==1)

replace id= sum(id) //生成id,是每一个国家对应一个id

replace GDP = GDP/1000000 //为了方便观察,把GDP除以1百万,相应的单位变为(百万美元)

bysort id :egen maxgdp=max(GDP) //得到每个国家GDP的最大值

结果如下:


这样我们就得到了每个地区GDP的最大值。接下来,开始做图!对多个地区分别作出相应的图标,我们可以利用循环。

我们先进行尝试,程序如下:

capture mkdir d:/statagraph/

forvalue i=1(1)4 {

gen maxgdp`i' = maxgdp if id ==`i'

graph twoway (bar GDP year, yaxis(1) barwidth(0.5) ylabel(0(`=maxgdp`i'/3')`=maxgdp`i'')) ///

(con GDP year,  yaxis(2) ) if id == `i'

graph export "d:/statagraph/`i'.tif",replace

}

结果出现了错误: 我们再看一下程序,当进行第一次循环生成 maxgdp1时,条件是 id=1 ,那么 id 不等于 1 的,都将变为缺失值。如下图:


在下边作图时,我们设定 ylabel(0(`=maxgdp`i'/3')`=maxgdp`i'') 因为 stata 把缺失值默认为无穷大,所以 ylabel 中将出现缺失值,程序无法继续运行。当然,我们想到可以把缺失值 drop 掉,可是缺失值所在的行也会一并的 drop 掉,我们将无法完成第二个图的绘制。相信经常关注我们公众号的朋友到了这里,会马上找到解决办法,那就是 preserve restore--stata 的起死回生之术。我们可以将这一命令写入循环中,使每一次循环结束,都还原一个完整的原始数据。(更多关于 preserve-restore 的命令,请查看推文 preserve restore——stata的起死回生之术

程序如下:

capture mkdir d:/statagraph/

forvalue i=1(1)4 {

preserve

gen maxgdp`i' = maxgdp if id ==`i'

drop  if maxgdp`i' ==.

graph twoway (bar GDP year, yaxis(1) barwidth(0.5) ylabel(0(`=maxgdp`i'/3')`=maxgdp`i'')) ///

(con GDP year,  yaxis(2) ) if id == `i'

graph export "d:/statagraph/`i'.tif",replace

restore

}

结果储存在d:/statagraph

可以看到这四幅图左边y轴的终值都为每个地区 GDP 的最大值。问题解决了!

以上就是今天小编与大家分享的全部内容了,如果各位看官喜欢今天的分享,不要吝啬您的打赏哦!~~想了解更多有关stata的小秘密,请继续关注我们的公众号哦,更多惊喜等着您!~~

编辑by谢慧蓉 徐苾雯


往期推文推荐:

1. 天路——chinafin与cntrade命令

2. 分时数据,从此唾手可得

3. 有了这个命令,以后还怕重复?

4. esttab功能挖掘:“Yes”or“No”

5. 用“套路”处理数据

6. 厉害了,我stata哥

7. 爬虫俱乐部周末送大礼——chinagcode提取中文地址经纬度

8. 据说这样数据替换比较快,你试一下,然后……

9. 众里寻她千百度,synth命令来帮助!

10. I have a Stata, I have a python

11. 用subinfile修改文件,滚蛋吧,繁琐的命令君!

12. 删繁就简三秋叶,subinfile似剪刀


此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:[email protected]
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


长按二维码关注你懂哟!~~