代码数据(此数据均为随机生成,仅用于本次代码协作演示,不具备任何实用研究性)
id | chinese | math | english | Statistics | lv |
1 | 74 | 8 | 30 | 67 | 0 |
2 | 37 | 23 | 22 | 14 | 1 |
3 | 63 | 25 | 37 | 71 | 0 |
4 | 88 | 48 | 79 | 16 | 0 |
5 | 95 | 97 | 53 | 54 | 0 |
6 | 75 | 24 | 16 | 15 | 1 |
7 | 95 | 2 | 40 | 80 | 1 |
8 | 82 | 85 | 27 | 29 | 0 |
9 | 86 | 33 | 65 | 60 | 1 |
10 | 58 | 52 | 99 | 4 | 0 |
11 | 88 | 51 | 79 | 27 | 1 |
12 | 77 | 99 | 77 | 71 | 0 |
13 | 43 | 99 | 10 | 10 | 1 |
14 | 67 | 6 | 78 | 85 | 1 |
15 | 61 | 20 | 85 | 37 | 1 |
16 | 16 | 61 | 1 | 57 | 1 |
17 | 22 | 50 | 29 | 81 | 0 |
18 | 38 | 68 | 7 | 1 | 1 |
19 | 3 | 48 | 1 | 45 | 0 |
20 | 23 | 14 | 58 | 14 | 0 |
21 | 41 | 59 | 6 | 60 | 0 |
22 | 73 | 73 | 27 | 50 | 0 |
23 | 15 | 76 | 81 | 20 | 1 |
24 | 49 | 89 | 31 | 49 | 1 |
25 | 8 | 28 | 41 | 91 | 0 |
26 | 16 | 25 | 95 | 45 | 0 |
27 | 42 | 29 | 96 | 20 | 1 |
28 | 42 | 45 | 36 | 85 | 1 |
29 | 61 | 94 | 54 | 33 | 1 |
30 | 94 | 87 | 44 | 100 | 1 |
一、基础命令
scatter yvar1 yvar2 xvar //yvar1和yvar2分别表示y轴的两个不同变量,xvar表示x轴变量
(scatter yvar1 xvar) (scatter yvar2 xvar)
scatter yvar1 xvar || yvar2 xvar //符号"()"和"||"均表示两个不同的图形重叠呈现在同一张图
代码示例:
scatter chinese math id
注:也可用graph twoway yvar1 yvar2 xvar或twoway yvar1 yvar2 xvar //效果与上述代码相同;
二、进阶命令
1.散点设置
(1)散点的形状
使用基础命令所绘制出的散点均为实心圆,若需要根据我们的需求设定不同的散点形状,需要进一步的命令指令,使用到的关键命令为msymbol(),()内为设定散点的具体形状,所常用代码均位于下图:
代码示例:
twoway scatter chinese math id,msymbol(S x)
(2)散点的大小
在进一步的绘图中,根据实际的需要,可能会对散点的大小进行控制,所使用的关键命令是msize(),()内规定使用圆点的大小,可键入命令graph query markersizestyle获取所有尺寸大小名称,如下所示(最小尺寸是vtiny,最大尺寸是ehuge):
代码示例:
twoway scatter chinese math id,msymbol(S x) msize(tiny medium)
(3)整体颜色
为保证所绘制图形的直观性、美观性和实用性,对所绘制散点原图内的不同分类散点进行颜色区分,所使用代码命令为mcolor(colorstyle),其中colorstyle为规定具体所使用的颜色指令,可采用代码graph query colorstyle获取该指令下的所有颜色,进一步的可采用palette color colorstyle进一步的查看所要调用的颜色。
代码示例:
twoway scatter chinese math id,msymbol(S x) msize(tiny medium) mcolor(mint pink)
2.散点标签和连线设置
(1)散点标签
通过增加散点标签说明散点所表示的文本信息,一般常用的标签选项有确定标签变量(mlabel)、标签位置(mlabposition)、标签大小(mlabsize)、标签颜色(mlabcolor)、标签角度(mlabangle),以下通过代码具体展示常用标签代码的用法。
标签确定代码示例:
twoway scatter chinese math id,msymbol(S x) msize(tiny medium) mcolor(mint pink) mlabel(S) //mlabel内为需设定的标签变量
标签角度代码示例:
twoway scatter chinese math id,msymbol(S x) msize(tiny medium) mcolor(mint pink) mlabel(S) mlabangle(45)
//mlabangle(45)表示设定标签倾斜45°,且mlabangle中设定为horizontal表示默认水平
标签位置代码示例:
twoway scatter chinese math id,msymbol(S x) msize(tiny medium) mcolor(mint pink) mlabel(S) mlabangle(45) mlabpos(7)
//mlabpos(7)表示将所有标签移动至7点钟方向,mlabpos内为1-12数字,对应的为时钟方向
当某些特殊的观测值需要单独说明标签位置,需要使用mlabvposition(varname),示例:
g pos=3 //生成常数变量,赋值为3
replace pos=12 if chinese>80 //将符合特定条件的观测值进行替换
twoway scatter chinese math id,msymbol(S x) msize(tiny medium) mcolor(mint pink) mlabel(chinese) mlabangle(45) mlabv(pos)
//mlabv(pos)表示chinese>80的标签在12点钟方向,小于80的在3点钟方向
注:标签角度和标签位置的理解较为接近,标签角度mlabangle表示的是标签符号和水平方向的夹角度数,变得为标签符号本身的方向,给定多少范围,标签符号倾斜多少度;而标签位置表示的是标签符号本身仍为水平方向,倾斜度不发生变化,变得是标签符号和散点间的位置方向。
(2)连线设置
为了更加清晰的观察散点图中的变化趋势,需要将各个散点连接起来,常用到的散点连接代码有connect(connectstyle)、sort[(varlist)]和lpattern(linepatternstyle),演示如下:
连线方式代码示例:
twoway scatter chinese math id,msymbol(S x) msize(tiny medium) mcolor(mint pink) mlabel(chinese) mlabangle(45) mlabpos(7) connect(l l)
//connect(l l)表示对chinese和math进行直线连接,是最常用的连线方式,i默认为无连接
注:sort选项和connect选项同时出现,一般sort适用于x轴变量,使所绘制图形有序。
连线类型代码示例:
twoway scatter chinese math id,msymbol(S x) msize(tiny medium) mcolor(mint pink) mlabel(chinese) mlabangle(45) mlabpos(7) connect(l l) lpattern(shortdash_dot dash) //lpattern(shortdash_dot dash)表示对chinese和math分别采用短虚线后接着圆点和虚线两种方式绘制
三、其他
1.多维图形绘制
对于在一般的图形绘制中,可能会在散点图中同时观察拟合曲线、曲线图等多个复合图形时,可采用如下示例代码:
scatter chinese math id || lfit chinese id || lfit math id
scatter chinese math id || line chinese id || line math id
注:这里的散点图曲线图和散点图上加连线的操作想法类似
twoway scatter chinese math id,msymbol(S x) msize(tiny medium) mcolor(mint pink) mlabel(chinese) mlabangle(45) mlabpos(7) connect(l l) lpattern(shortdash_dot dash) || lfit chinese id || lfit math id
2.坐标轴等设置
一般对坐标轴的修改包括xy轴(标题、刻度、颜色、标题距离等)、xy轴标题、主标题、副标题,以及注释、说明文字等。此处仅有坐标轴的标题和标签使用作一说明,后续会在不同类型图形代码中介绍。
twoway scatter chinese math id,xtitle("学生") ytitle("成绩") //修改x轴和y轴标题
twoway scatter chinese math id,legend(label(1 "文学") label(2 "数学")) xtitle("学生") ytitle("成绩")
//修改变量标签,修改x轴和y轴标题
最后,图形的世界千变万化,愿我们都能游刃有余,欢迎大家交流,共同学习进步!