Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者: 袁子晴 (香港大学)
邮箱: yzq0612@foxmail.com
目录
Stata 绘图需要美观的配色、节点符号和线型,但是自定义搭配又很繁琐并需要美学基础。为了简化上述操作,Ben Jann 开发了 palettes
包。具体来看,该包由 colorpalette
、colorpalette9
、 symbolpalette
和 lineepalette
等 Stata 命令构成。grstyle
用这些命令来管理颜色、符号和线型。当然,它们也可以直接用于查看或检索调色板。需要注意的是,colorpalette
需要 Stata 14.2 以上版本。
* 命令安装
net install gr0075, replace
colorpalette
命令有两种语法变体,分别对应于两种不同用途:
第一种:从一个或多个调色板中检索出所需的颜色组合,并返回至 r()
中以便后续绘图引用,语法如下:
colorpalette [argument] [, paletteoptions graphoptions]
其中 argument
如下:
palette[[, palette options] / [ palette [, palette options] / ... ]]
第二种:仅用于浏览多个调色板,而不在 r()
中返回颜色。语法如下:
colorpalette [, palette options graph options]: pspec [ / pspec / ... ]
其中 pspec
如下:
palette [, palette options]
除此之外,调色板选项 palette options
包括:
n(#)
:指定调色板包含颜色的数量,大多情况默认选择前 #
种颜色,因此等价于选择 (1/#)
;部分调色盘会根据选择的颜色数量自适应调整;select(numlist)
:选择并排序从调色板中获取的颜色;reverse
:以相反的顺序返回调色板;intensity(numlist)
:用于调整颜色强度。0 到 1 之间的值使颜色变浅;大于 1 的值使颜色变深;可跟选择的颜色数量对应,指定多个数值;opacity(numlist)
:设置不透明度程度 (需要 Stata 15)。该值必须在 0 (完全透明) 和 100 (完全不透明) 之间。同上,可指定多个数值。常见的图形选项 graph options
包括:
title(string)
:指定自定义标题;gropts(twowayoptions)
:提供传递给图形命令 twoway
的选项。并且,语法 1 的附加图形选项还包括:
nograph
:禁止生成调色板预览图;rows(#)
:指定调色板预览图中不同色块排列的最小行数,默认为 5。语法 2 的附加图形选项还包括:
horizontal
:水平地显示调色板,默认水平显示;vertical
:垂直显示调色板;plabels(strlist)
:为调色板提供自定义标签,用空格和双引号将标签括起来;lcolor(colorstyle)
:指定自定义的轮廓颜色,默认是使用与填充色相同的颜色;lwidth(lineewidthstyle)
:指定一个自定义的轮廓厚度,默认值是 lwidth(vthin)
。与此同时,语法 1 命令返回值 r()
,为后续绘图调用色板提供了方便,建议结合后续实例理解:
r(n)
颜色的数量;r(ptype)
颜色;r(p#)
:第 #
个颜色;r(p)
:以空格分隔的颜色列表;r(pnote)
:调色板备注 (如适用);r(pname)
:调色板的名称;r(p#info)
:第 #
个颜色的信息 (如适用)。
查看 colorpalette
命令语法 1 返回值 r()
中的颜色组合,以便在随后的绘图命令中使用。r(p)
包含带有空格分隔的颜色列表,r(p1)
、r(p2)
等包含第一个和第二个的单色。下面的折线图是用 ColorBrewer 中的 Set1
调色板绘制的 (指定选项 nograph
以防止 colorpalette
显示调色板)。
. sysuse uslifeexp, clear
. lab var le_wfemale "white females"
. lab var le_wmale "white males"
. lab var le_bfemale "black females"
. lab var le_bmale "black males"
. * 选择调色板 Set1
. colorpalette Set1, select(1/3 5) nograph
. * 查看返回内存的r()
. return list
. * 绘图中颜色选择上述命令返回的色盘
. line le_wfemale le_wmale le_bfemale le_bmale year, lcolor(`r(p)') lwidth(*2 ..) ///
> ytitle(Life expectancy)
如果不想每次绘图前都运行 colorpalette
命令,就可将其返回的颜色列表保存在暂元中,以便后续调用:
. local mycolors `"`r(p)'"' // 保存存在局部暂元中
. colorpalette Accent, locals // 或者附加局部暂元的选项
. colorpalette Fuchsia Tomato SteelBlue SeaShell, globals // 或者附加全局暂元选项
在下面的案例中,我们更详细地展示了 colorpalette
命令的使用:
*-1. 导入示例数据
lxhget covid_data2.csv, replace
import delim using covid_data2.csv, clear delim(",")
*-2. 初步清洗
drop id
encode country, gen(id)
gen date2 = date(date, "DMY")
format date2 %tdDD-Mon-yy
drop date
ren date2 date
order id country date
lab var date "Date"
lab var total_cases_pop_ma7 "Cases per million population (7 day MA)"
*-3. 根据最近一天的新冠确诊数量建立排名
summ date
gen tick = 1 if date == `r(max)' // mark the last entry
egen rank = rank(total_cases_pop_ma7) if tick==1, f
levelsof country, local(lvls)
foreach x of local lvls {
display "`x'"
qui summ rank if country=="`x'"
cap replace rank = `r(max)' if country=="`x'" & rank==.
}
*-4. 为每个国家建立标签
gen marker = country + " (" + string(total_cases_pop, "%9.0fc") + ")" if tick==1
*-5. 安装自定义绘图主题
net install cleanplots, from("https://tdmize.github.io/data/cleanplots")
set scheme cleanplots
graph set window fontface "Arial Narrow"
*-6. 引用调色板进行绘图
levelsof rank, local(lvls)
local items = r(r)
foreach x of local lvls {
colorpalette viridis, n(`items') nograph
local customline `customline' (line total_cases_pop_ma7 date if rank == `x', ///
lc("`r(p`x')'") lp(solid) lw(*0.8)) ||
}
summ date
local start = r(min)
local end = r(max) + 30
twoway `customline' (scatter total_cases_pop_ma7 date if tick==1, ///
mcolor(black%25) msymbol(circle) msize(*0.1) mlabel(marker) ///
mlabsize(*0.55) mlabcolor(black)), xlabel(`start'(15)`end', ///
labsize(vsmall) angle(vertical)) ytitle(, size(small)) xtitle("") ///
title("{fontface Arial Bold: COVID-19 cases per million for European countries}") ///
note("Source: ECDC via Our World in Data", size(vsmall)) legend(off)
如果你想完全自定义颜色,比如使用网站「黄到蓝渐变颜色组合」,那么可以参考下面案例,直接在 colorpalette
命令后面加上每种颜色对应的 RGB 值并用空格分隔开,即可得到如下效果:
*https://www.color-hex.com/color-palette/96712 (Sunflower Plum)
local customline // reset the local
levelsof rank, local(lvls)
local items = r(r)
foreach x of local lvls {
colorpalette "238 234 196" ///
"201 198 179" ///
"144 161 163" ///
"85 110 120" ///
"27 68 88" ///
, ipolate(`items', power(0.8)) reverse nograph
local customline `customline' (line total_cases_pop_ma7 date if rank == `x', ///
lc("`r(p`x')'") lp(solid) lw(*0.8)) ||
}
summ date
local start = r(min)
local end = r(max) + 30
twoway `customline' (scatter total_cases_pop_ma7 date if tick==1, mcolor(black%25) ///
msymbol(circle) msize(*0.1) mlabel(marker) mlabsize(*0.55) mlabcolor(black)), ///
xlabel(`start'(15)`end', labsize(vsmall) angle(vertical)) ytitle(, size(small)) ///
xtitle("") ///
title("{fontface Arial Bold: COVID-19 new cases per million for European countries}") ///
note("Source: ECDC via Our World in Data", size(vsmall)) ///
legend(off)
首先,我们简要地预览几个现有的调色板的颜色组合,colorpalette
生成的预览图显示颜色、名称、代码及附加信息:
. colorpalette economist
下面是用户制作的一个带有 RGB 代码和标签的调色板:
. colorpalette lin, fruits
同样地,预览默认的符号点型:
. symbolpalette default
预览默认的线型样式:
. linepalette default
. symbolpalette: default / lean / tufte / pplain / pblind
要预览多个调色板时可用斜杠分隔不同调色板,选项 lcolor(black)
被指定用来在色域周围画黑线:
. colorpalette, lcolor(black): Accent / Dark2 / Set1 / Set3
. colorpalette lin, fruits / lin, vegetable / lin, food select(1/6) title("Edibles")
下面的例子展示了 HCL 颜色生成的默认方案,垂直选项的效果和决定颜色的数量 n()
的使用:
. colorpalette, vertical n(40): hcl, blues / hcl, greens / hcl, oranges / hcl, purples / hcl, heat / hcl, plasma
你可以通过指定颜色风格 (命名的颜色、RBG 值、CMYK 值或 HSV 值) 列表来自定义调色板:
. colorpalette blue brown cranberry emerald forest_green gold green khaki ///
> lavender lime magenta maroon mint navy olive olive_teal orange ///
> orange_red pink purple red sand sienna teal, title(Some named colors)
除此之外,你还可以使用 HCL 代码 (输入 "hcl h c l"
,其中 h
、c
和 l
是色调、色度和亮度的值) 或「十六进制代码」来指定颜色:
. colorpalette #bd1e24 #e97600 #f6c700 #007256 #0067a7 #964f8e, rows(2) title(FS 595 Safety Colors)
intensity()
和 opacity()
选项可以调整颜色强度和不透明度:
. colorpalette cranberry, intensity(0.1(.05)1)
创建一个自己命名的调色板:
program colorpalette_bootstrap3
c_local P #337ab7,#5cb85c, #5bc0de,#f0ad4e,#d9534f
c_local I primary,success,info,warning,danger
end
colorpalette bootstrap3
Stata 15 自带了 5 个调色盘分别是:s1
、s1r
、s2
、economist
和mono
,用户额外贡献了以下调色盘:cblind
、plottig
、538
、mrc
、tfl
、burd
和 lean
,预览图如下:
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