Stata绘图极简新模板:plotplain和plottig-T251

发布时间:2021-06-19 阅读 5246

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者: 苗妙 (华南理工大学)
邮箱: miaomiao@scut.edu.cn

Source: Daniel Bischof, 2017, New Graphic Schemes for Stata: Plotplain and Plottig, Stata Journal, 17(3): 748–759. -PDF-, -PDF2-, -Link-

目录


1. 简介

运用Stata画图是论文写作中必不可少的环节。然而朋友们是否有这样的经历,当我们想根据自己的需要对画图模板进行调整的时候,总是无法绘制出自己心中完美的图形。事实上,随着Stata计算能力的大大提升,很多功能都有了大幅改进,相比于Stata其他方面的改进,它提供的画图模板改进的却不多。今天的推文就给大家介绍两个绘制极简图形的模板,这两个模板结合主流期刊对论文图形的要求,对现有的画图模板进行了改进,简单方便,直接下载 plotplainplottig 的主题就可以直接使用哦。值得一提的是,这两个主题对色盲朋友们也更加友好。

2. 安装新模板:plotplain 和 plottig

2.1 命令安装和数据下载

首先,我们下载作图模板程序文件和示例数据,输入下列代码之后,进入下载页面:

. net sj 17-3 gr0070  // 查看命令下载页面

方式1: 用 Stata 命令直接安装和下载,命令如下:

. net install gr0070.pkg // 安装外部命令
  * 等价于单击 「(click here to install)」

. net get gr0070.pkg // 下载数据和文件和 dofile
  * 等价于单击 「(click here to get)」

操作如下:

  • 点击 (click here to install), 安装相应的程序文件
  • 点击 (click here to get),获取本文示例的 excel 格式数据及 do 文件的作图代码

2.2 数据预处理

这份数据是全球 207 个国家 1970-2014 年遭遇恐怖袭击事件后的死伤人数统计。导入数据后,我们对country 和 region 变量进行转换,并基于12个地区35年的数据,对恐怖袭击后的死伤人数进行加总。

clear all
*导入数据
import excel "globalterrorismdb_0615dist_short.xlsx", sheet("Blatt1") firstrow
save "rep_plotplain_plottig.dta", replace 
drop _all

*处理数据,用于作图
use "rep_plotplain_plottig.dta"
rename country country1  
rename region region1
encode country_txt, gen(country)
encode region_txt, gen(region)
gen counter=1

collapse (sum) counter nkill nwound, by(region iyear)
xtset region iyear
tsfill

rename counter nevents
label var nevents "logged number of terrorist events"
label var nkill "logged number of people killed"
label var nwound "logged number of people wounded"
label var iyear "incident year"

forval i=1/15 {
    gen n`i'=`i'
}
replace nkill=log(nkill+1)
replace nwound=log(nwound+1)
replace nevents=log(nevents+1)

基于此,我们生成了地区-年份层面面板数据,主要变量如下:

  • nevents: 恐怖事件次数的对数
  • nwould: 恐怖事件中受伤人数的对数
  • nkill: 恐怖事件中死亡人数的对数

3. Stata 默认模板及局限

下面我们首先使用 Stata 的默认画图模板绘图,并指出绘图中的限制。

3.1 默认模板 s2mono 的效果

图 1 是散点图,图 2 是折线图。 作图命令如下:

*图1
graph twoway (scatter nkill nevents if region==12 & nevents<=500 & nkill<=1000) ///
(scatter nkill nevents if region==7  & nevents<=500 & nkill<=1000) ///
(scatter nkill nevents if region==6  & nevents<=500 & nkill<=1000) ///
, scheme(s2mono) legend(label(1 Western Europe) label(2 North America) label(3 MENA)) title("s2mono")

*图2
graph twoway (line nevents iyear if region==12) (line nevents iyear if region==7) (line nevents iyear if region==6), ///
scheme(s2mono) legend(order(1 "Western Europe" 2 "North America" 3 "MENA"))  title("s2mono") xline(2003) ///
text(8 2003  "Iraq war", place(e)) xlabel(1970(10)2015)
图1 地区恐怖袭击散点图( Stata 默认模板)
图2 地区恐怖袭击折线图( Stata 默认模板)

3.2 Stata 默认模板作图的局限

这两张图应该是大家非常熟悉的绘图主题,那么现在我们来分析一下,图 1 和图 2 存在哪些问题呢?总结起来,有如下几个方面:

  • y 轴的标签是纵向的,读起来很不方便
  • 灰色的图片背景,导致图片被灰色框所围绕
  • 散点图中的标记和线条过粗,导致有些重合的点无法分辨
  • 图例中的标识符号可以更小一点,因为在有些情况下,图例中的标识过大可能出现重合问题
  • 只有平行于 x 轴的网格线,平行于 y 轴的网格线缺失
  • 图例的外框可以省去
  • 图例可以离数据更近一些,放在下方会强迫读者把注意力放在图片的下方
  • 坐标轴的颜色可以与背景及数据点区分开
  • 大多数的默认颜色不适于色盲人群

4. plotplain 和 plottig 绘图主题的极简化改进

4.1 plotplain 的绘图效果

采用新绘图主题的选项,我们绘制出了图 3 和 图 4。即在代码中,我们在 scheme 的选项中写入plotplain。如果想绘制色盲者可以识别的彩色图,我们将 plotplain 替换成 plotplainblind 即可。感兴趣的读者可以自行尝试。

*图3
graph twoway (scatter nkill nevents if region==12 & nevents<=500 & nkill<=1000) ///
 (scatter nkill nevents if region==7  & nevents<=500 & nkill<=1000) ///
 (scatter nkill nevents if region==6  & nevents<=500 & nkill<=1000) ///
 , scheme(plotplain) legend(label(1 Western Europe) label(2 North America) label(3 MENA))  title("plotplain") 
*图4

图3 地区恐怖袭击散点图(黑白图改进版本)
图4 地区恐怖袭击折线图(黑白图改进版本)

下面,大家来做个小游戏,一起来找区别呀!请大家来观察一下改进后的图 3 和图 4,与图 1 和图 2 的区别在哪里呢?其实,对应于 2.3 小节我们总结的 Stata 默认图示的缺陷,图 3 和图 4 逐一进行了改进。总结如下:

  • y 轴的标签是横向的,读起来更加方便啦
  • 灰色的图片背景被删除了,替换成了白色背景,图片更加柔和
  • 散点图中的标记和线条更细,使我们更容易分辨出重合的位置
  • 图例中的标识符号更小
  • 增加了平行于 y 轴的网格线,且网格线采用了极细的灰色虚线表示,不容易分散读者注意力
  • 去除图例的外框
  • 图例放在了图片的右侧
  • 坐标轴的颜色改为灰色,更容易融入绘图背景
  • plotplainblind 主题增加了七种颜色,这七种颜色对于色盲的人而言,都是可以区分的

4.2 plottig 的绘图效果

图 5 展示了采用 plottig 主题的绘图。它与 plotplain 主题的区别主要是,背景的颜色可以提高标识和颜色的区分度。我们也可以看到,图 1 和图 2 的背景色存在于图片周围,而图 5 职中的背景色是均匀底色。同时,右上方和右下方的两幅色盲版本图,采用 14 色的调色板,对色盲人群更加友好。绘图命令和绘制图形如下:

*散点图
graph twoway (scatter nkill nevents if region==12 & nevents<=500 & nkill<=1000) ///
(scatter nkill nevents if region==7  & nevents<=500 & nkill<=1000) ///
(scatter nkill nevents if region==6  & nevents<=500 & nkill<=1000) ///
, scheme(plottig) legend(label(1 Western Europe) label(2 North America) label(3 MENA)) name(s2m1) title("plottig")
graph twoway (scatter nkill nevents if region==12 & nevents<=500 & nkill<=1000) ///
(scatter nkill nevents if region==7  & nevents<=500 & nkill<=1000) ///
(scatter nkill nevents if region==6  & nevents<=500 & nkill<=1000) ///
, scheme(plottigblind) legend(label(1 Western Europe) label(2 North America) label(3 MENA)) name(s2c1) title("plottigblind")

*折线图
graph twoway (line nevents iyear if region==12) (line nevents iyear if region==7) (line nevents iyear if region==6), ///
scheme(plottig) legend(order(1 "Western Europe" 2 "North America" 3 "MENA")) name(s2m2, replace) title("plottig") xline(2003) ///
text(8 2003  "Iraq war", place(e))
graph twoway (line nevents iyear if region==12) (line nevents iyear if region==7) (line nevents iyear if region==6), ///
 scheme(plottigblind) legend(order(1 "Western Europe" 2 "North America" 3 "MENA"))  name(s2c2) title("plottigblind") xline(2003) ///
text(8 2003  "Iraq war", place(e))

*图形组合  
graph combine s2m1 s2c1 s2m2 s2c2, iscale(0.5)  
graph export plotplain5.eps, replace
graph drop s2m1 s2c1 s2m2 s2c2
图5 地区恐怖袭击折线图(带背景色以及针对色盲人群的改进版本)

4.3 plotplain 和 plottig 绘图主题的调色板展示

看了这么多图,也许你也疲劳了,让我们来欣赏一下美丽的调色板。大家画图的时候,只需要查看一下图 6 的调色板,选择适合的颜色,不用一个一个去试了哦。

图6 `plotplain` 和 `plottig` 的调色板

5. 绘图主题的个性化定制

如果你对上面改进的绘图仍然不满意,没关系,我们还可以根据这个模板进行个性化的改进。由于 Stata 绘图主题的编程语法与标准的 Stata 语法有所不同,因此我们建议使用者在已有的主题上进行改进,而不是建立全新的主题模板。下面,我们对此提供一些思路和建议。

5.1 绘图主题的语法格式

建立一个简单的 text editor (.txt file),用于创建主题。但要确保后缀是.scheme,而不是.txt。命令的语法格式为:

characteristic object option

比如,当我们相对颜色这个特征,针对背景这一对象,设定为白色时,就可以写成:

color background white

当你想把背景色改成黑色时,只需将 white 改成 black。 再比如,如果想把坐标轴的灰色换成黑色,可以打开主题的备份文档,寻找下面这一命令,并将 gs10 修改为 black。:

color axisline gs10

5.2 plottig 绘图主题中的常用选项

除了更改背景颜色,我们以 plottig 为例,给大家介绍一些常用的主题绘制选项。

  • clockdir: 控制对象的位置
  • color: 控制对象的颜色
  • linepattern: 控制图像内的线条样式(比如 shortdash )
  • linestyle: 控制图像外的线条样式
  • linewidth: 线条大小
  • gsize: 对象的大小
  • margin: 对象间的边距
  • numticks_g: 坐标轴上标尺的数量
  • symbol: 标识的样式(比如散点图中的 circle )
  • symbolsize: 标识的大小
  • tickstyle: 标尺的样式(比如标签的标尺)
  • yesno:只是在特定命令的选项后面加上 yes 或是 no , 比如 yesno draw_major_grid yes 控制了plottig 主题的网格线

6. 结语

我们介绍了 plotplainplottig 这两个绘图主题。它们简单、方便、实用,不仅给使用者的画图提供了新的选择,而且解决了 Stata 默认绘图主题的中的一些缺陷。同时,我们也介绍了如何根据自己的需要,修改已有主题。希望大家都可以绘制出漂亮的图片!

7. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 绘图 模板
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh