Stata绘图:峰峦图绘制 joy_plot
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会 · 2022暑期班
作者:甘月 (华南师范大学)
邮箱:jagy1996@163.com
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
目录
1. 简介
2. 命令介绍
3. Stata 实例
4. 相关推文
1. 简介
本文将介绍 joy_plot
命令,该命令由 Fernando (2022) 开发,主要用于绘制 joyplot。joyplot 是一种看起来犹如山水画一般的层峦叠嶂图形,由于外形与山峦类似,其中文名为山峦图、峰峦图或叠嶂图。这种图形本质上是一种密度图,能够同时显示多组数据的变化趋势,因此可以被用于组间对比分析的可视化。
2. 命令介绍
* 命令安装
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
命令来定义颜色并将它们用于散点图。
3. Stata 实例
我们利用作者提供的工资数据集 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
4. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 绘图, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata绘图 Stata绘图:绘制华夫饼图-waffle Stata绘图:绘制美观的散点图-superscatter Stata绘图:回归系数可视化-multicoefplot Stata绘图:如何更高效的绘制图形 Stata绘图:绘制桑基图-sankey_plot Stata绘图-可视化:组间差异比较散点图 Stata绘图:addplot-fabplot-多图层美化图片 Stata绘图:箱形图与小提琴图-vioplot Stata绘图:太美了!羊皮卷风格图形 Stata绘图:自定义绘图利器-palettes 史上最牛Stata绘图模版-schemepack:酷似R中的ggplot2-袁子晴 Stata绘图:addplot-层层叠加轻松绘图 Stata 绘图:用 Stata 绘制一打精美图片-schemes 常用科研统计绘图工具介绍 Stata空间计量:莫兰指数绘图moranplot命令介绍 Stata绘图-组间差异可视化:不良事件火山图、点阵图
课程推荐:因果推断实用计量方法
主讲老师:丘嘉平教授
🍓 课程主页:https://gitee.com/lianxh/YGqjp
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【**百度一下:**连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。