# 普林斯顿Stata教程(二) - Stata绘图

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

#### 专题链接

Stata拥有出色的图形功能，可通过`graph`命令，`help graph`了解详情。统计中最常见的图表是显示点或线的双坐标轴X-Y图。这可以通过子命令`twoway`实现。`twoway`命令中又含42个子命令及绘图类型，其中最重要的是`scatter``line`。我们将对`scatter``line`着重介绍，并简要介绍其他绘图类型。

Stata 10引入了一个图形编辑器，可用于交互式地修改图形。然而，我不会提倡这种做法，因为它与记录和确保研究中所有步骤可重复的目标相冲突。

## 2.1 散点图

``````infile str14 country setting effort change   using http://data.princeton.edu/wws509/datasets/effort.raw, clear
``````

### 2.1.1 简单的散点图

``````graph twoway scatter change setting
``````

### 2.1.2 拟合线

``````graph twoway (scatter setting effort)  (lfit setting effort)
``````

``````graph twoway (lfitci setting effort)   (scatter setting effort)
``````

``````graph twoway (lfitci setting effort) (scatter setting effort) , ytitle("Fertility Decline") legend(off)
``````

### 2.1.3 点标签

``````graph twoway (lfitci change setting)
(scatter change setting, mlabel(country) )
``````

``````gen pos=3
replace pos = 11 if country == "TrinidadTobago"
replace pos = 9 if country == "CostaRica"
replace pos = 2 if country == "Panama" | country == "Nicaragua"
``````

``````graph twoway (lfitci change setting)  (scatter change setting, mlabel(country) mlabv(pos) )
``````

### 2.1.4 标题，图例和说明

`````` graph twoway (lfitci change setting)
(scatter change setting, mlabel(country) mlabv(pos) )
, title("Fertility Decline by Social Setting")
ytitle("Fertility Decline")
legend(ring(0) pos(5) order(2 "linear fit" 1 "95% CI"))
graph export fig31.png, width(500) replace
(file fig31.png written in PNG format)
``````

## 2.2 线图

``````sysuse uslifeexp ,clear
(U.S. life expectancy, 1900-1999)
``````

## 2.2.1 简单的线图

``````graph twoway line le_wmale le_bmale year
``````

``````(line le_wmale year) (line le_bmale year)
``````

### 2.2.2 标题和图例

``````graph twoway line le_wmale le_bmale year  , title("U.S. Life Expectancy") subtitle("Males") legend( order(1 "white" 2 "black") )
``````

``````graph twoway line le_wmale le_bmale year , title("U.S. Life Expectancy") subtitle("Males")  legend( order(1 "white" 2 "black") ring(0) pos(5) )
``````

### 2.2.3 线条样式

• 线条样式由`clpattern()`选项指定。最常见的模式是`solid``dash``dot`, 查看`help linepatternstyle`获取更多信息。
• 线宽由`clwidth()`指定，可用的选项包括`thin``medium``thick`,详情参见`help linewidthstyle`
• 颜色由`clcolor()`指定，使用颜色名称（如`red``white``blue`）或RGB值确定颜色，请参阅`help colorstyle`

``````graph twoway (line le_wmale le_bmale year , clcolor(blue red) ) , title("U.S. Life Expectancy") subtitle("Males")
legend( order(1 "white" 2 "black") ring(0) pos(5))
``````

### 2.2.4 标度选项

``````. twoway (line le_wmale le_bmale year , clcolor(blue red) ) , ///
title("U.S. Life Expectancy") subtitle("Males") ///
legend(order(1 "white" 2 "black") ring(0) pos(5))  ///
yscale(log range(25 80))
``````

### 2.2.5 图形方案

Stata使用方案来控制图的外观，参见`help scheme`。您可以设置默认方案并在所有图形中应用`set scheme_name`。您也可以使用不同的方案对所作的最后一个图形重新展示，选出效果最好的方案`graph display, scheme(scheme_name）`

`````` graph display, scheme(economist)
graph export fig32.png, width(500) replace
``````

## 2.3 其他图形

### 2.3.1条形图

`````` sysuse citytemp, clear
graph bar tempjan tempjul, over(region) bargap(10) intensity(70)  ///
title(Mean Temperature) legend(order(1 "January" 2 "July"))

. graph export bar.png, width(500) replace
(file bar.png written in PNG format)
``````

### 2.3.2 箱线图

`````` graph box tempjan, over(region, sort(1)) box(1, color("51 102 204"))  ///
title(Box Plots of January Temperature by Region)

graph export boxplot.png, width(500) replace
(file boxplot.png written in PNG format)
``````

## 2.3.3 核密度估计

`````` forvalues i=1/4 {
capture drop x`i' d`i'
kdensity tempjan if region== `i', generate(x`i'  d`i')
}

gen zero = 0
``````

``````. twoway rarea d1 zero x1, color("blue%50") ///
>    ||  rarea d2 zero x2, color("purple%50") ///
>    ||  rarea d3 zero x3, color("orange%50")  ///
>    ||  rarea d4 zero x4, color("red%50") ///
>        title(January Temperatures by Region) ///
>        ytitle("Smoothed density") ///
>        legend(ring(0) pos(2) col(1) order(2 "NC" 1 "NE" 3 "S" 4 "W"))

. graph export kernel.png, width(500) replace
(file kernel.png written in PNG format)
``````

## 2.4 图形管理

Stata默认在内存中保存您绘制的最后一个图形，并将其称为"Graph"。如果你在在创建图形时使用`name()`为图形单独命名，在内存中可以保留多个图形。这对于组合图形很有用，`help graph combine`了解更多。请注意，即使您保存了数据，保存在内存中的图表也会在您退出Stata时消失，除非您保存图形本身。

## 相关课程

http://lianxh.duanshu.com

### 课程一览

Stata数据清洗 游万海 直播, 2 小时，已上线

Note: 部分课程的资料，PPT 等可以前往 连享会-直播课 主页查看，下载。

#### 关于我们

• Stata连享会 由中山大学连玉君老师团队创办，定期分享实证分析经验。直播间 有很多视频课程，可以随时观看。
• 连享会-主页知乎专栏，300+ 推文，实证分析不再抓狂。
• 公众号推文分类： 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类，主流方法介绍一目了然：DID, RDD, IV, GMM, FE, Probit 等。
• 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标，输入简要关键词，以便快速呈现历史推文，获取工具软件和数据下载。常见关键词：`课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法`

✏ 连享会学习群-常见问题解答汇总：
https://gitee.com/arlionn/WD