mline 是 Stata 中一个非常有用的绘图命令,它的全称是 Multiple Line Plot(多重线图),它的主要作用是在一张图上绘制多条线,非常适合用来展示多个变量随时间或其他连续变量变化的趋势。

命令简介
mline 命令通常不单独使用,而是作为 twoway 绘图家族的一员,它的基本语法结构是:
twoway mline varlist [if] [in] [, options]
varlist: 这是mline的核心部分,你需要在这里列出你想要绘制成多条线的变量名,Stata 会为varlist中的每一个变量都生成一条独立的线。[if] [in]: 可选的条件语句,用于选择特定的观测值进行分析。[, options]: 可选的参数,用于自定义图形的方方面面,如线条样式、标记、图例等。
核心功能与用途
mline 的核心功能是将多个变量的数值序列连接成线,并绘制在同一个坐标系中。
主要用途:
- 时间序列分析:最经典的应用,展示多个国家/地区、多个公司、多个产品在多年内的销售额、GDP、股价等指标的变化趋势。
- 面板数据趋势:观察不同个体(如个人、公司)在某个变量上的轨迹。
- 多组比较:比较不同组别在某个连续变量上的表现,比较实验组和对照组在不同时间点的测量值。
- 展示多个相关指标:同时展示一个公司的收入、成本和利润随时间的变化。
语法详解与选项
mline 的强大之处在于其丰富的选项,下面是一些最常用和最重要的选项:

a. 基本图形选项
这些选项可以控制线条本身的样式:
connect_options: 控制连接线的方式。connect(.): 不画线(只显示点)。connect(J): 用阶梯线连接(Step function),常用于离散时间点的事件。connect(L): 用直线连接(默认)。
msymbol(): 设置数据点的标记符号。msymbol(O)(圆形),msymbol(S)(方形),msymbol(T)(三角形),msymbol(none)(无标记)。
msize(): 设置标记符号的大小。msize(small),msize(medlarge),msize(*1.5)。
mcolor(): 设置标记符号的颜色。lpattern(): 设置线条的样式。lpattern(solid),lpattern(dash),lpattern(dot),lpattern(longdash_dot)。
lwidth(): 设置线条的粗细。lwidth(thin),lwidth(medthick),lwidth(thick),lwidth(*2)。
lcolor(): 设置线条的颜色。
b. 图例与标题选项
legend(): 控制图例的显示和样式。legend(on): 显示图例(默认)。legend(off): 不显示图例。legend(title("图例标题")): 设置图例的标题。legend(label(1 "第一线的标签") label(2 "第二线的标签")): 非常重要! 自定义图例中每条线的标签,如果不设置,Stata 会使用变量名。"主标题")`: 设置整个图形的主标题。
subtitle("副标题"): 设置副标题。"Y轴标签")设置Y轴的标签。"X轴标签"): 设置X轴的标签。
c. 坐标轴选项
yscale(): 控制Y轴。yscale(range(0 100)): 设置Y轴的范围。ylabel(0(20)100, angle(horizontal)): 自定义Y轴的刻度和标签角度。
xscale(): 控制X轴,用法同yscale。
实践示例
我们使用 Stata 自带的 uslifeexp.dta 数据集,它包含了美国从1900年到1999年的预期寿命数据。
// 首先加载数据 sysuse uslifeexp, clear // 查看数据结构 list in 1/5
这个数据集有三个变量:year (年份), le_male (男性预期寿命), le_female (女性预期寿命),现在我们想用 mline 同时绘制男性和女性的预期寿命变化趋势。
示例1:最基本的 mline 图
twoway mline le_male le_female year
解读:

twoway mline ...:启动一个多重线图。le_male le_female:我们要绘制的两个变量。year:作为X轴的变量(Stata会自动识别最后一个变量为X轴)。
这个图会画出两条线,但图例会显示变量名 le_male 和 le_female,这可能不够直观。
示例2:美化图形 - 添加标签、标题和颜色
twoway ///
(mline le_male le_female year, ///
lcolor(blue red) /// // 分别设置两条线的颜色
lpattern(solid dash) /// // 设置线条样式
msymbol(O S) /// // 设置数据点标记
mcolor(blue red) /// // 设置标记颜色
legend( /// // 开始自定义图例
title("性别") /// // 图例标题
label(1 "男性") /// // 第一条线的标签
label(2 "女性") /// // 第二条线的标签
position(6) /// // 图例位置 (6=右下角)
cols(1) /// // 图例分1列显示
) ///
) ///
, /// // 逗号结束 mline 的选项,开始图形的全局选项"美国1900-1999年预期寿命变化趋势") /// // 主标题
subtitle("数据来源:美国国家健康统计中心") /// // 副标题"预期寿命 (岁)") /// // Y轴标签"年份") /// // X轴标签
scheme(s1color) // 使用一个专业的配色方案
解读:
- 我们将选项分组,使代码更清晰。 是 Stata 的续行符。
(mline ... , ...)里的选项只影响mline命令本身。- 逗号后面的选项是整个
twoway图形的全局选项。 - 通过
legend()选项,我们将图例改为了更易读的“男性”和“女性”,轴标签,使图表信息更完整。
mline vs. 其他相关命令
理解 mline 与其他 twoway 命令的区别很重要:
| 命令 | 功能 | 适用场景 | 关键区别 |
|---|---|---|---|
mline |
绘制多条线 | 多个变量随时间/连续变量变化趋势。 | 每个变量对应一条线,X轴通常是另一个共同的变量(如年份)。 |
line |
绘制一条线 | 单个变量随时间/连续变量变化趋势。 | 一次只能画一条线,如果要画多条,需要多次使用 line 并用 连接。 |
connected |
绘制带标记的连线 | 单个变量的趋势,并强调每个数据点。 | 默认会画出数据点标记和连接线。mline 默认不画标记,除非指定 msymbol()。 |
tsline |
时间序列线图 | 专门为时间序列数据(tsset 过)设计。 |
功能强大,支持处理面板时间序列(tsline)、添加参考线(yline)、处理缺失值等。 |
简单总结:
- 如果你有多个变量想在同一个X轴上画线,用
mline是最直接、最方便的。 - 如果你的数据是时间序列并且已经
tsset,优先考虑tsline,它更专业。 - 如果只需要画一条线,用
line或connected。
希望这份详细的解释能帮助你完全掌握 mline 命令!
