首页 热门文章

Stata怎么画散点图?从基础到美化,一篇搞定

时间: 2026-01-05    浏览量: 17871

对于数据分析来说,一张好图胜过千言万语。散点图是最常用的探索性图表之一,它能直观展示两个连续变量之间的关系。在Stata里画散点图其实非常简单,但想要画得好看、画得专业,还需要掌握一些技巧。今天就来手把手教你,从最基础的散点图开始,一直到能自定义各种元素、做出可以直接放进论文的图表。

准备工作:导入示例数据

在开始画图之前,我们需要一组数据。Stata自带的auto.dta是一个经典的示例数据集,包含1978年美国汽车的各种信息,非常适合用来演示散点图。

sysuse auto, clear

这个数据里有汽车的price(价格)、mpg(油耗)、weight(重量)等变量。我们接下来就用这些数据来画图。

基础散点图:scatter命令

Stata里画散点图的命令是scatter,基本语法是:

scatter 纵轴变量 横轴变量

注意顺序:scatter后面先写纵轴变量,再写横轴变量。

比如我们想看汽车的油耗(mpg)和价格(price)之间的关系,可以画一个散点图:

scatter price mpg

执行后,Stata会弹出一个图形窗口,横轴是油耗(mpg),纵轴是价格(price)。每一个点代表一辆汽车。你可以看到,随着油耗增加,价格似乎有下降的趋势,也就是更省油的车价格可能更高。

如果想把横轴和纵轴反过来,交换变量位置就行:

scatter mpg price

这画的是价格对油耗的关系,图形方向会变化。

添加更多信息:分组设色

有时候数据里还有分类变量,我们想看看不同类别的点有什么特征。比如auto数据里有一个变量foreign,1表示进口车,0表示国产车。我们可以用不同颜色或符号区分这两类。

在scatter命令里,如果想按某个分组变量显示不同颜色,可以用选项:

scatter price mpg, by(foreign)

这条命令会把图形分成左右两个子图,左边是国产车,右边是进口车。这样你就能直观比较两类车的价格-油耗关系。

如果不想分图,而是想在同一个图里用不同颜色区分,可以用选项:

scatter price mpg, mlabel(foreign)

但这会把每个点旁边标注数值,不太美观。更好的做法是先生成分组标记变量,然后用不同的符号绘制两次。不过Stata有更简便的方法:

twoway (scatter price mpg if foreign==0) (scatter price mpg if foreign==1)

这条命令用twoway把两个散点图叠在一起,第一个是国产车,第二个是进口车。但这样还无法区分颜色。

更专业的方法是:

scatter price mpg, mcolor(foreign)

这个选项会根据foreign的值给点染上不同颜色。但默认颜色可能不够明显,需要配合其他设置。

添加拟合线:看趋势

散点图能看出变量关系的大致方向,但有时我们还想加上一条趋势线,更清楚地看到关系的形式。比如看价格和油耗是线性关系还是非线性关系。

加上线性拟合线的方法很简单,在scatter命令里加一个选项:

scatter price mpg, lfit

lfit的意思是linear fit,会在散点图上叠加一条线性回归线。如果关系不是直线,还可以用qfit加上二次拟合线:

scatter price mpg, qfit

如果想同时看到散点、线性拟合线和二次拟合线,可以用twoway把几个图形叠在一起:

twoway (scatter price mpg) (lfit price mpg) (qfit price mpg)

这样会画出一个图,里面同时有散点、直线和曲线,方便比较哪种拟合效果更好。

美化图形:标题、坐标轴和图例

默认的图形已经能传达信息,但如果要放进论文或报告,还需要做一些美化。Stata提供了丰富的选项来定制图形。

添加标题和副标题:

scatter price mpg, title("汽车价格与油耗关系") subtitle("1978年美国汽车数据")

修改横轴和纵轴标签:

scatter price mpg, xtitle("油耗(英里/加仑)") ytitle("价格(美元)")

如果不想用默认的刻度,也可以自定义:

scatter price mpg, xlabel(10(5)40) ylabel(0(2000)15000)

xlabel(10(5)40)的意思是横轴从10到40,每隔5显示一个标签。

如果图中有分组,可以添加图例:

scatter price mpg, by(foreign, title("") note(""))

但更复杂的图例需要在twoway里设置。

调整点的样式:大小、颜色和形状

默认的散点样式可能不够突出,我们可以自定义点的各种属性。

修改点的颜色:

scatter price mpg, mcolor(blue)

把所有点改成蓝色。

修改点的形状:

scatter price mpg, msymbol(circle)

msymbol可以选circle(圆圈)、diamond(菱形)、square(方块)、triangle(三角)、point(小点)等。

修改点的大小:

scatter price mpg, msize(medium)

msize可以选tiny、small、medium、large等。

如果想把点改成空心圆圈:

scatter price mpg, msymbol(Oh) mcolor(blue)

Oh是大写字母O加h,表示空心圆圈。

这些选项可以组合使用:

scatter price mpg, mcolor(red) msymbol(circle) msize(small)

保存和导出图形

图画好了,怎么保存下来?在图形窗口打开时,点击菜单栏的File - Save Graph,可以保存为Stata格式的.gph文件,方便以后再次打开编辑。

如果要放进论文或报告,通常需要导出为图片格式。在图形窗口点击File - Export,可以选择保存为PNG、TIFF、EPS、PDF等格式。推荐用TIFF格式,这是很多期刊要求的格式。

如果想用命令导出,可以用graph export:

scatter price mpg graph export "散点图.png", replace

replace表示如果已有同名文件就覆盖。可以指定宽度和高度:

graph export "散点图.png", width(1000) replace

综合示例:一个完整的散点图制作过程

让我们把所有步骤串起来,做一个完整的例子。假设我们想研究汽车重量(weight)和油耗(mpg)的关系,并区分国产车和进口车,加上拟合线,最后导出为PNG图片。

* 导入数据 sysuse auto, clear * 画散点图,按产地分组设色 twoway (scatter mpg weight if foreign==0, mcolor(blue) msymbol(circle) ///  legend(label(1 "国产车"))) /// (scatter mpg weight if foreign==1, mcolor(red) msymbol(diamond) ///  legend(label(2 "进口车"))) /// (lfit mpg weight, lcolor(black) lpattern(dash) ///  legend(label(3 "线性拟合"))), /// title("汽车重量与油耗关系") /// xtitle("重量(磅)") ytitle("油耗(英里/加仑)") /// legend(position(6) rows(1)) * 导出图片 graph export "重量油耗散点图.png", width(1200) replace

这个例子做了几件事:

  • 用twoway把两个散点图和一个拟合线叠在一起

  • 国产车用蓝色圆圈,进口车用红色菱形

  • 拟合线用黑色虚线

  • 添加了标题、轴标签

  • 图例放在底部,一行显示

  • 最后导出为1200像素宽的PNG图片

查看帮助和进一步学习

Stata的绘图功能非常强大,除了散点图,还有直方图、箱线图、条形图、折线图等。如果想了解更多选项,可以用help命令查看帮助文档:

help scatter

帮助文档里会列出所有可用选项,并附有示例代码。

总结

Stata画散点图的核心命令是scatter,基本用法是scatter y x。通过添加各种选项,可以自定义点的颜色、形状、大小,可以添加拟合线,可以修改标题和坐标轴,还可以按分组变量区分颜色。

对于初学者,建议先掌握基础用法,然后逐步尝试各种选项。画图是一个熟能生巧的过程,多练习几次,就能做出既专业又美观的散点图。

关键词: Stata画图,散点图,scatter命令,数据可视化,Stata绘图

Copyright @ 国际会议云 2026 版权所有 蜀ICP备2022018807号-3 网站地图