时间: 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。通过添加各种选项,可以自定义点的颜色、形状、大小,可以添加拟合线,可以修改标题和坐标轴,还可以按分组变量区分颜色。
对于初学者,建议先掌握基础用法,然后逐步尝试各种选项。画图是一个熟能生巧的过程,多练习几次,就能做出既专业又美观的散点图。
Copyright @ 国际会议云 2026 版权所有 蜀ICP备2022018807号-3 网站地图