Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者:甘月 (华南师范大学)
邮箱:jagy1996@163.com
目录
本文将介绍 joy_plot
命令,该命令由 Fernando (2022) 开发,主要用于绘制 joyplot。joyplot 是一种看起来犹如山水画一般的层峦叠嶂图形,由于外形与山峦类似,其中文名为山峦图、峰峦图或叠嶂图。这种图形本质上是一种密度图,能够同时显示多组数据的变化趋势,因此可以被用于组间对比分析的可视化。
* 命令安装
net describe http://repec.org/bocode/j/joy_plot
ssc install joy_plot, replace
ssc install palettes, replace
ssc install colrspace, replace
* 命令语法
joy_plot varname [if] [in] [aweight], [over(varname) by(varname)]
[joy_plot_options color_options legend_options twoway_options]
其中,必选项:
over(varname)
:指定用于绘制 joyplot 的分组变量。如果不需要用到该选择,建议直接使用 kdensity
命令绘制密度图;by(varname)
:指定在 over()
分组的基础上进一步分组的变量,为 over()
定义的每个组创建多个密度图。在绘制小提琴图时,要求是二值变量。外观选项:
radj(#)
:使用时,绘图范围将扩展到超过 varname
的最大或最小值,默认值为0;range(#1 #2)
:使用时,将绘图范围设置为 #1
和 #2
之间,默认使用样本的最大值和最小值;dadj(#)
:用于调整密度的高度,使得图层之间能够相互重叠,默认值为 1 (没有重叠);bwadj(#)
:#
用于确定每个子图的带宽,取值应该在 0 到 1 之间。当 bwadj=1
时,每个图使用由 kdensity
决定的带宽,它可能因子组而异。当 bwadj=0
时,所有图在所有子组中使用带宽等于简单平均。#
取任何介于 0 和 1 之间的数字时,都将使用两个选项之间的加权平均值作为子图的带宽;bwadj2(#)
:#
用于改变所有图层的带宽,取值必须为正数。例如,bwadj2(0.5)
可以将所有图层的带宽修改为原来的一半,默认值为 1;bwadj3(#)
:#
用于定义所有图层的外生带宽,取值必须为正数。例如,bwadj3(0.5)
将所有图层的带宽设为0.5,这是设置图层带宽最快捷的选项;kernel(kfun)
:用于选择一个特定类型的核函数来绘图,默认是高斯;nobs(#)
:定义将使用多少个点绘图。#
取较大的数字时会产生一个更平滑的图形,但也会使用更多的内存,默认值为 200。图例选项:
strict
:除非指定,否则将使用值标签或 over(variable)
的值来标记组。如果值标签未定义,使用 strict
不会显示任何文本;notext
:使用时,不会在垂直轴上添加任何组标识;textopt(opts)
:用于更改组标识的某些特征;right
:当使用时,将把组标识放在图的右侧,默认是放在图形左侧;offset(#)
:当使用时,将组标识向右 (+) 或左 (-) 移动 #
;gap0
:当使用时,所有图形将从 0 开始绘制,效果类似于在一个图中绘制多个核密度图。该选项不能与 violin
选项同时使用;alegend
:当使用时,将在图表中添加一个带有 over(varname)
或 by(varname)
定义的所有数值的图例。默认情况是不显示任何图例。当 over()
和 by()
被同时指定时,将根据 by()
中变量的值来创建图例;iqr[(numlist)]
:当指定时,将在图中添加显示指定百分位数 numlist
的线条。如果没有提供 numlist
,它会在图中显示第 25、50 和 75 百分位数的线条;iqrlwidth(numlist)
:用于改变标记指定百分位数线条的宽度,默认值为 0.3;iqrlcolor(color)
:用于改变标记指定百分位数线条的颜色或颜色属性,它可能覆盖其他颜色选项;violin
:当使用时,它将绘制一个小提琴图,而不是核密度图。如果使用 by()
,它将绘制一个半小提琴图。颜色选项:
color(colorlist)
:使用一个颜色列表为 over(varname)
定义的每个组指定颜色。如果指定的颜色少于 over(varname)
定义的组,后面的组将使用最后指定的颜色。例如,如果输入 color(red blue)
,但 over(varname)
定义了 3 个组,那么最后一个组也将被指定为 “蓝色”;colorpalette(*)
:另一种指定颜色的方法,使用 colorpalette
命令来定义颜色并将它们用于散点图。
我们利用作者提供的工资数据集 oaxaca.dta,对不同婚姻状况下的工资分布情况进行可视化。
. use http://fmwww.bc.edu/RePEc/bocode/o/oaxaca.dta , clear
. gen mstatus=single+2*married+3*divorced
. joy_plot lnwage, over(mstatus)
在上图的基础上,我们添加一个标签来区分所有的组,并显示为一个图例。
. label define mstatus 1 Single 2 Married 3 Divorced
. label values mstatus mstatus
. joy_plot lnwage, over(mstatus) alegend notext
如果想要使用默认颜色以外的颜色,有以下三种选择:手动提供颜色列表,使用 colorpalette()
选项,以及使用 使用 color(colorstyle)
选项。
. * 手动提供颜色列表: 海军蓝和金色
. joy_plot lnwage, over(mstatus) alegend color(navy gold)
. * 使用 colorpalette() 选项
. joy_plot lnwage, over(mstatus) alegend colorpalette(blues) notext
上述命令指定填充色为蓝色,notext
选项表示不在图中显示组标识。
. * 使用 color(colorstyle) 选项
. joy_plot lnwage , over(mstatus) color(gs10) iqr right title("Wages distribution") ///
> subtitle("by Marital Status")
上述命令中,color(gs10)
将填充色设置为 gs10
,iqr
表示在图中显示第 25、50 和 75 百分位数的线条,right
表示将组标识放在图形右侧,title()
和 subtitle()
分别表示添加主标题和副标题。
绘制一个忽略分布下尾的图,具体命令如下。其中选项 range(2 5)
将绘图范围限制在区间 [2, 5] 上,从而实现忽略分布下尾的要求。
. joy_plot lnwage, over(mstatus) iqr range(2 5) title("Wages distribution") ///
> subtitle("by Marital Status")
比较不同婚姻状况的男性和女性的工资分布,需要通过选项 over(mstatus)
和 by(female)
实现。
. joy_plot lnwage, over(mstatus) by(female) title("Wages distribution") ///
> subtitle("by Marital Status")
图中蓝色表示男性,红色表示女性 (下同)。接着,我们使用小提琴图来比较不同婚姻状况的男性和女性工资分布,需要通过 violin
选项实现。
. joy_plot lnwage , over(mstatus) by(female) title("Wages distribution") ///
> subtitle("by Marital Status and Gender") violin
比较不同性别的单身、已婚和离婚人士的工资分布。
. joy_plot lnwage , by(mstatus) over(female) title("Wages distribution") ///
> subtitle("by Marital Status and Gender")
图中蓝色表示单身,红色表示已婚,绿色表示离婚。0 和 1 分别表示男性和女性,由于未给 female
添加值标签,因此图中直接显示数值。另外,由于 mstatus
不是一个二值变量,因此不能使用 violin
选项。进一步地,可通过 alegend
选项添加图例,直观显示红、蓝、绿色代表的含义。
. joy_plot lnwage , by(mstatus) over(female) title("Wages distribution") ///
> subtitle("by Marital Status and Gender") alegend
Note:产生如下推文列表的 Stata 命令为:
lianxh 绘图, m
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
和songbl
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh