暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Stata绘图 | Stata绘制多期(年)核密度图

17529
点击关注了解更多哦

核密度图是论文中经常出现的一个图形,用来展示变量随时间发展的动态变化过程,上一期介绍了如何利用R中的DescTools包和ggplot2包来绘多期(年)制核密度图,具体可见R语言绘图 | 多期核密度图绘制。今天分享如何用Stata来绘制多期(年)核密度图。

1.数据处理

数据仍以R语言绘图 | 多期核密度图绘制中所使用的数据为例,可在后台回复【20210101】获得,也可在国家统计局[1]官方网站自行下载。数据如下:

*导入数据
import delimited "C:\Users\Acer\Desktop\density.csv", encoding(GB18030) 
* 对变量进行对数化处理
gen ln2020 = ln(y2020)
gen ln2019 = ln(y2019)
gen ln2018 = ln(y2018)
gen ln2017 = ln(y2017)

2.单期核密度图绘制

2.1 首先绘制单期核密度图

kdensity ln2017

2.2 对单期核密度图进行调整

kdensity ln2017 , clp(dash) lcolor(red) lwidth(0.5) ///
xtitle("") ytitle("Density")  title(2017年ln.Per.GDP核密度曲线图) ///
note(数据来源:国家统计局)

绘图参数解读:clp() 调整线的类型,线的类型可参考3.2.2小节,lcolor() 调整线的颜色,lwidth() 调整线的宽度,xtitle() , ytitle(), title() 分别为x、y轴标题和图标题,note() 为图的注解,一般用来标注数据来源。更多关于线的调整,可参考下图[2]

3. 多期核密度图绘制

关于多期核密度图的绘制不止一种方法,这里以addplot图层叠加的方式来进行多期核密度图的绘制。

3.1 多期核密度图绘制

ssc intall addplot,replace
kdensity ln2017 , addplot((kdensity ln2018) (kdensity ln2019)  (kdensity ln2020))

3.2 对多期核密度图做进一步调整

3.2.1 首先对图例进行调整。 包括图例的位置、文本、标题、背景色等

kdensity ln2017, addplot((kdensity ln2018) (kdensity ln2019) (kdensity ln2020)) ///
  legend( label (1 "2017 kernel") label (2 "2018 kernel") label (3 "2019 kernel") ///
  label (4 "2020 kernel") size(small) position(1) ///
  row(4) ring(0)  subtitle(年份) region(fcolor(gs15)))

绘图参数解读legend() 函数内的code为图例的调整。首先对每条线的标签名称进行修改,使用label() 函数,其中第一个参数为变量的顺序,第二个参数为该变量对应的名称,依次进行设置;size() 为对图例内文本的大小进行调整;position() 函数对图例的位置进行调整,其中参数可为1-12,参考钟表时针位置;row() 参数或者col() 函数对图例的行数或者列数进行调整;ring(0) 表示图例在绘图区内,ring(1) 则表示图例在绘图区外;subtitle() 为图例的名称,此外,也可以在subtitle中加入size(small) 将图例标题的文本缩小;region(fcolor(gs15) 表示对图例的背景色进行调整,此外也可以在region() 函数中加入lcolor(none) ,表示去除图例四周的边框。

3.2.2 对线条的类型进行调整。 如果黑白印刷的话,此时各年份所对应的线条就不适合使用色彩来区分,需要对线条的类型做进一步的调整。

kdensity ln2017 , addplot( (kdensity ln2018,clp(longdash)) ///
(kdensity ln2019,clp(dash_dot))  (kdensity ln2020, clp(shortdash)) ) ///
 legend( label (1 "2017 kernel") label (2 "2018 kernel") ///
 label (3 "2019 kernel") label (4 "2020 kernel") ///
 size(small) position(1) row(4) ring(0) subtitle(年份)  ///
 region(fcolor(gs15))) 

绘图参数解读:在每个kdensity 后加入clp() 函数,对线的类型进行调整,与单期图的调整类型,只是要注意标点符号的位置不要错误,下图为常用的线条类型。

3.3.3 对轴标题、图标题、子标题以及附注进行调整

 kdensity ln2017 , addplot( (kdensity ln2018,clp(longdash)) /// 
 (kdensity ln2019,clp(dash_dot))  (kdensity ln2020, clp(shortdash)) ) ///
 legend( label (1 "2017 kernel") label (2 "2018 kernel") ///
 label (3 "2019 kernel") label (4 "2020 kernel") size(small) ///
 position(1) row(4) ring(0) subtitle(年份)  region(fcolor(gs15))) ///
 title("2017-2020年ln.GDP核密度曲线图") subtitle("WeChat:日常分享的小懒猫") ///
 xtitle("ln.GDP")  ytitle("核密度") note("数据来源:国家统计局")

绘图参数解读title 为设置图的主标题,subtitle 为设置图的副标题,xtitle 为x轴标题,ytitle 为y轴标题,note 为注,通常用于标注数据来源。如果不想某一项显示,则可以用英文输入法状态下用双引号括起来,中间不加任何内容,如 title("")  subtitle("")  xtitle("")  ytitle("") note("")

4.主题的设置

此外,也可以通过scheme() 函数调用stata中自带的不同主题,即在绘图code中加入scheme(scheme_name) ,scheme_name为主题名称,以达到快速调整图形的目的。也有一些Stata用户发布的主题,如burd 主题、lean主题等,用户可以自主通过网络途径进行安装。下面分面以几个主题为例,展示不同主题的绘图效果。

*安装burd主题
ssc install scheme-burd
*查找lean主题
findit lean scheme
*列出可用主题
graph query, schemes

不同的绘图主题风格 scheme(burd)scheme(s1mono)scheme(s2mono)
注:如果使用s2mono主题,在不设置线条类型的状况下,该主题也会对线的类型进行更改。

关于如何在图中任意位置添加标签,可参考added text options[3]

5.其他

另外,在绘制出基本图形后,也可以在graph 中通过鼠标操来对图形进行调整,也是一种很不错的方法。关于核密度的图的绘制也可以利用R语言来绘制,见R语言绘图 | 多期核密度图绘制,R在图形的调整以及code的重复调用上具有更大的灵活性。


如有帮助请多多点赞哦!

参考资料

[1]

国家统计局: https://data.stats.gov.cn/index.htm

[2]

g-3line_options: https://www.stata.com/manuals/g-3line_options.pdf

[3]

g-3added_text_options: https://www.stata.com/manuals13/g-3added_text_options.pdf


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论