查看原文
其他

Stata绘图:峰峦图绘制 joy_plot

连享会 连享会 2023-10-24




👇 连享会 · 推文导航 | www.lianxh.cn

连享会 · 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) 将填充色设置为 gs10iqr 表示在图中显示第 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 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【**百度一下:**连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存