Stata 绘图中的 twoway 类型图表(一)

Stata 绘图中的 twoway 类型图表(一)

这是「Stata 绘图指引」系列课程的第三次课,第一次课我大致介绍了 Stata 能够绘制的各种图表,第二次我介绍了 Stata 图形编辑器的使用。这次课我们将开始细致地学习 Stata 的绘图体系。

twoway,也就是 graph twoway,能够绘制超过 13 种类型的图表。本次课程将主要以散点图为例展示这些图表的绘制方法。另外大家在学习绘图命令的时候也要注意积累 options,这些选项的灵活使用也是绘制精美图表的关键。

twoway 图表的主要优点是其可以将各种类型的图表叠加起来构造复杂的图表。例如散点图和拟合图的组合、直方图和密度曲线的组合等。

运行 help twoway 就能查看 twoway 能够绘制哪些类型的图表了,不过大部分我们都用不到。

在下面的代码中,我将使用截止 6 月 26 日的中国新冠疫情数据进行演示。

scatter:散点图

在各种图表类型中,散点图无疑是使用最频繁的了。散点图可以展示变量间的相关关系,还可以通过散点的大小、颜色增展示更多变量信息。一个最简单的散点图:

1
2
3
4
5
use china-covid19, clear
gsort -date
keep if date == date[1]
drop if city == "武汉"
graph twoway scatter confirmed deaths

通常我将上面的绘图代码简写为:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

这样我们将可以看到确诊人数和病死人数的数量关系了,大致是正相关。

另外我们可以针对散点的属性进行选项的调整,我们可以想一下散点有哪些属性:

  1. 形状:圆点、方点、三角形等;
  2. 颜色:红色、绿色、青色等;
  3. 大小:小、中等、大等;
  4. 标签:我们可以在每个散点的旁边添加一个标签;
  5. 标签的大小;
  6. 标签的位置:我们可以把散点想象成钟表盘的原点,标签可以位于钟表盘的各个方向;
  7. 散点的透明度:这是 Stata 15 之后添加的新功能。
  8. 其他可以参考:help scatter##marker_options 和 help scatter##marker_label_options

形状

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

Stata 支持的散点形状下面几种(help symbolstyle),上面的图中我使用的是 S

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

颜色

Stata 预置了很多种颜色,你可以使用通常的 “red”, “green”, “blue” 等单词表示颜色,还可以使用 RGB 数值表示颜色,例如:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

Stata 预置的颜色有:

绘制代码如下:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

上图中每种颜色下面的三个数字就是 RGB 颜色值。RGB 三个字母分别表示红色、绿色和蓝色,也就是色彩的三原色,自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成。计算机定义颜色时 R、G、 B 三种成分的取值范围是 0-255,0 表示没有刺激量,255 表示刺激量达最大值。R、G、B均为255时就合成了白光,R、G、B均为0时就形成了黑色,当两色分别叠加时将得到不同的 “C(Cyan,青色)、M(Magenta,品红)、Y(Yellow,黄色)” 颜色。

我找了几个工具帮大家了解颜色。另外我编写了两个 Stata 命令帮助大家进行 RGB 和 HEX 两种颜色模式的转换:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

关于 Stata 绘图中的配色方案选择大家可以学习我之前的一个教程:Stata 绘图中的配色方案选择

在散点图中使用 RGB 颜色:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

大小

size 的设定也通常使用两种方式,一种是类似 tiny, vlarge 之类的预置尺寸,另一种是使用 *0.5 这种形式的相对大小:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

像 vlarge 这样的预置尺寸有:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。
  • ehuge
  • large
  • medlarge
  • small
  • vhuge
  • vsmall
  • zero
  • huge
  • medium
  • medsmall
  • tiny
  • vlarge
  • vtiny

如果采用相对大小:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

我们可以使用权重变量设定散点的大小:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

关于权重的使用可以阅读 help weight 了解更多。

散点标签

使用 mlabel 选可以在散点的旁边添加标签:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

由于散点重叠问题很严重,标签重叠的问题也很严重,所以我们可以选择给某些散点添加,某些不添加:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

可以看到还有标签重叠的问题,我们可以试试使用 egen + mlabvpos 改变标签的方向减少遮盖:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

直接设定标签相对于散点的方向则可以使用 mlabpos 选项:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

思考:12 点钟方向和 0 点钟方向有什么区别?

连接选项

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

如果我们是使用 scatter y1 y2 y3 … x,那么 connect 该怎么用呢?

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

思考:试试下面的语句,看看得到了什么样的结果:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

思考:这个时候如何分别设置各个散点图层的散点颜色、样式呢?

图例设置。当我们绘制多个散点图层的时候就需要对图例进行设置了,我建议采用下面的方式进行设置:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

分面绘制

使用 by 选项可以实现分面绘制:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

其他

其他的选项我就不再一一列举了,我们通过一段代码来感受:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

类似 scatter 的图表类型

spike

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

可以使用 base 选项设定基准:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

horizontal 选项可以制作水平的 spike 图:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

dropline

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

dot

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

pcspike

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

pccapsym

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

pcarrow

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

思考:使用 tw pcarrow 命令和 china-covid19.dta 数据集绘制一幅各市最后两天的现存确诊人数变化的图表。

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

pci & pcarrowi

pci:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

pcarrowi:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

Stata 绘图中的箭头样式可以使用 msize 和 barbsize 共同设定:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。


是不是很有意思!

作业

  • 思考下面的图是如何绘制出来的?

  • 我还在附件中为大家准备了全球的新冠疫情数据,放在本文的代码进行练习。

知识星球附件链接:https://t.zsxq.com/jeMvjyv

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×