温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
⛳ Stata 系列推文:
作者: 苗妙 (华南理工大学)
邮箱: miaomiao@scut.edu.cn
目录
运用Stata画图是论文写作中必不可少的环节。然而朋友们是否有这样的经历,当我们想根据自己的需要对画图模板进行调整的时候,总是无法绘制出自己心中完美的图形。事实上,随着Stata计算能力的大大提升,很多功能都有了大幅改进,相比于Stata其他方面的改进,它提供的画图模板改进的却不多。今天的推文就给大家介绍两个绘制极简图形的模板,这两个模板结合主流期刊对论文图形的要求,对现有的画图模板进行了改进,简单方便,直接下载 plotplain
与 plottig
的主题就可以直接使用哦。值得一提的是,这两个主题对色盲朋友们也更加友好。
首先,我们下载作图模板程序文件和示例数据,输入下列代码之后,进入下载页面:
. net sj 17-3 gr0070 // 查看命令下载页面
方式1: 用 Stata 命令直接安装和下载,命令如下:
. net install gr0070.pkg // 安装外部命令
* 等价于单击 「(click here to install)」
. net get gr0070.pkg // 下载数据和文件和 dofile
* 等价于单击 「(click here to get)」
操作如下:
这份数据是全球 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
: 恐怖事件中死亡人数的对数下面我们首先使用 Stata 的默认画图模板绘图,并指出绘图中的限制。
图 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 和图 2 存在哪些问题呢?总结起来,有如下几个方面:
采用新绘图主题的选项,我们绘制出了图 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,与图 1 和图 2 的区别在哪里呢?其实,对应于 2.3 小节我们总结的 Stata 默认图示的缺陷,图 3 和图 4 逐一进行了改进。总结如下:
plotplainblind
主题增加了七种颜色,这七种颜色对于色盲的人而言,都是可以区分的图 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
看了这么多图,也许你也疲劳了,让我们来欣赏一下美丽的调色板。大家画图的时候,只需要查看一下图 6 的调色板,选择适合的颜色,不用一个一个去试了哦。
如果你对上面改进的绘图仍然不满意,没关系,我们还可以根据这个模板进行个性化的改进。由于 Stata 绘图主题的编程语法与标准的 Stata 语法有所不同,因此我们建议使用者在已有的主题上进行改进,而不是建立全新的主题模板。下面,我们对此提供一些思路和建议。
建立一个简单的 text editor (.txt file),用于创建主题。但要确保后缀是.scheme,而不是.txt。命令的语法格式为:
characteristic object option
比如,当我们相对颜色这个特征,针对背景这一对象,设定为白色时,就可以写成:
color background white
当你想把背景色改成黑色时,只需将 white 改成 black。 再比如,如果想把坐标轴的灰色换成黑色,可以打开主题的备份文档,寻找下面这一命令,并将 gs10 修改为 black。:
color axisline gs10
除了更改背景颜色,我们以 plottig
为例,给大家介绍一些常用的主题绘制选项。
clockdir
: 控制对象的位置color
: 控制对象的颜色linepattern
: 控制图像内的线条样式(比如 shortdash )linestyle
: 控制图像外的线条样式linewidth
: 线条大小gsize
: 对象的大小margin
: 对象间的边距numticks_g
: 坐标轴上标尺的数量symbol
: 标识的样式(比如散点图中的 circle )symbolsize
: 标识的大小tickstyle
: 标尺的样式(比如标签的标尺)yesno
:只是在特定命令的选项后面加上 yes 或是 no , 比如 yesno draw_major_grid yes
控制了plottig 主题的网格线我们介绍了 plotplain
和 plottig
这两个绘图主题。它们简单、方便、实用,不仅给使用者的画图提供了新的选择,而且解决了 Stata 默认绘图主题的中的一些缺陷。同时,我们也介绍了如何根据自己的需要,修改已有主题。希望大家都可以绘制出漂亮的图片!
Note:产生如下推文列表的 Stata 命令为:
lianxh 绘图 模板
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh