一步一步教你作出漂亮的三维图形(二)

2017-04-24 强宇曦 爬虫俱乐部 爬虫俱乐部

在三维的世界里,二维图形已经无法满足人类的需求了。那stata如何画三维的图呢?在之前的推文里我们已经介绍了graph3d绘制三维图形。今天,爬虫君向大家再介绍两个命令surfacescat3来画3d图形。

安装命令:

ssc install surface

ssc install scat3

我们随机生成用于画图的变量:

        clear

        set obs 600

        gen x = int((_n - mod(_n-1,30) -1 ) /30 )

        gen y = mod(_n-1,30)

        gen z = normalden(x,10,3)*normalden(y,15,5)*10000

surface

除了graph3d之外,surface也可以绘制三维图形。

语法:

surface [var1 var2 var3] [, options twoway_options]

栗子:

1、使用surface绘制以x、y、z为变量的基本款三维图:

surface x y z

与graph3d相比,surface生成的图形自带长方体框、坐标轴名称及坐标数值,并将所有的数据点连接起来,如果我们想去掉连接线的话可以使用nowire选项:

surface x y z, nowire scale(0.8) sch(s1color)

这里我们除了使用了nowire选项,也用了其他选项:

scale():可调整文本、标记等的大小

scheme(schemename):可以调整图形的整体外观,比如改变图形的颜色或者标记的形状,有多个方案可供选择。

2、如果我们想给图形增加坐标轴标签、图形题目等等,则可以使用下面的命令:

surface x y z , ylabel(0 13 20 29) labelround(1) xtitle(X2333) ztitle(Z2333) ytitle(Y2333) title(3Dplot2333) nowire sch(sj) scale(0.8)

ylabel():标记出y轴上特定的值,比如13、20等。

labelround():坐标轴数值保留几个小数点,例子中保留了一位。

xtitle():增加x轴标签名称,ytitle()、ztitle()类似。

title():增加图形标题。

此 外,surface还可以使用twoway里的一些选项,比如saving(filename[, replace ]),将图形保存到本地文件;name(name[, replace]),将图形保存在存储器中,这样新生成的图形就不会替代原来的图形,存储器中可以保留多个图形。

scat3

除了graph3d、surface外,scat3也可以绘制三维图形。

语法:

scat3 xvar yvar zvar [if exp] [in range] [, rotate(#) elevate(#) axistype(axis_type) axes(line_options) shadow[(scatter_options)] spikes(rspike_options) titlex([title_text][, marker_label_options]) titley([title_text][, marker_label_options]) titlez([title_text][, marker_label_options]) variablenames separate(varname) graph_options]

栗子:

1、 使用scat3绘制以x、y、z为变量的基本款三维图:

scat3 x y z, sch(economist) scale(0.29) titlez(, mlabang(0) mlabs(vhuge)) titlex(,mlabs(vhuge)) titley(,mlabs(vhuge))

同样使用了sch()和scale()选项调整图形标记颜色与大小。用titlex()、titley()、titlez()则是对坐标抽标签进行设置。

2、如果我们同样想装饰一下图形,可以使用以下命令:

scat3 x y z, rot(45) elev(45) titlez(z2333, mlabang(0) mlabpos(0) mlabs(vhuge)) titlex(x2333, mlabpos(7) mlabs(vhuge)) titley(y2333, mlabpos(7) mlabs(vhuge)) title("myplot23333", size(tenth) pos(12)) sch(economist) scale(0.3333)

rot()、elev():分别指定旋转角度、仰角角度,默认都为45度。常用的视觉效果较好的组合有30、60;45、45;60、30。

titlez()、titley()、titlex():指 定坐标轴名称标签,并且可通过选项设置标签的位置颜色等,比如mlabang()指标签放置角度,0表示水平位置,90表示垂直放置;mlabpos() 则表示标签位置;mlabs()指标签大小。坐标轴名称标签也可以指定,如例子里的z2333,如果未指定则为变量标签或变量名称。

title():设置图形标题。

此外,scat3还有其他有意思的选项,也可以使用twoway里的一些选项,小伙伴们可以自己琢磨一下使图形更美观哦!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                       文字编辑:徐苾雯

技术总编:刘贝贝



往期推文推荐:

1.中国高校财经、管理与综合类期刊灌水排行榜

2.关于RTF你不知道的命令

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号