全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
87092 38
2020-07-27

stata作图有很多很多很多命令和可设置的地方,最大的缺点是它没有excel那样的交互界面,只能靠自己一点点摸索。但是stata也是可以画出和excel媲美的图的,一方面可以使用作图界面的【Graph Editor】,算是一个半交互界面,可以对图表的各种选项进行调整,但相比于excel还是有很大局限性,缺点是不方便复制操作;另一方面就是使用代码命令作图,这就需要我们必须对有哪些代码可以使用有一个系统的了解。

-

最近几天在连续使用stata作各种图,很多命令代码都是自己翻命令说明和各种搜索信息才找到的,为方便自己日后再使用,也方便更多同学,现开帖记录如下~
-------
1.授人以鱼不如授人以渔,首先从如何自己探索各种作图命令开始:

help twoway_options             //twoway画图命令可以设置的所有选项的汇总

help added_line_options        //添加辅助线的选项

help added_text_options       //添加文本的选项

help axis_options                 //坐标轴设置

help title_options                 //各种标题设置

help legend_options             //图例设置

help scale(#)                       //大小范围设置

help region_options              //作图区域大小设置

help scheme(schemename)    //设置图表主题样式

以上是一些主要的设置选项的命令,有些选项的下级还有更详细具体分类,比如:

help axis_options                 //坐标轴设置

help axis_label_options         //坐标轴标签设置

help axis_title_options          //坐标轴标题设置

help axis_scale_options         //坐标轴范围设置

help axis_choice_options       //坐标轴选择设置

种种作图命令都藏在这些help的说明文件中,大家可以自己探索。这篇整理笔记后续内容其实也只是说明文件的搬运工,希望大家都能善用help命令,不做伸手党~
-------
*附上一些不错的学习资源:
Stata基础操作: 绘图概述(一):本论坛内的一篇帖子,对基础的设置可选项列举的十分详尽,比如可选颜色,可选点的样式,可选线的样式等。
https://www.surveydesign.com.au/tipsgraphs.html:几乎画了所有stata可以画的图,并配有命令。但是没有对每一个命令详细阐释,不过可以供参考~
https://www.jianshu.com/p/6e3ba1d15a24:详尽总结了直方图的调整美化命令。
-------
2.几个数据整理的基础命令
数据整理的命令范围就更大了,这里仅记录一下我最近做整理金融交易数据时用到的小命令
-------
2.1生成日期型时间变量
直接下载得到的数据导入stata后经常是文本型的(如图date变量),我们如何让stata识别它变成日期型时间变量(如图t1和t2变量)呢?
截屏2020-07-27 13.20.16.png
g nt=date(日期变量,"YMD")
//stata识别时间变量后,会生成stata内部一套序数表示时间,我们通常需要在此基础再调整格式
-------
g t1=date(日期变量,"YMD")
form t1 %td
//%td格式就是日期型变量的默认格式
//本命令显示为“17nov2014”表示2014年11月17日
-------
g t2=date(日期变量,"YMD")
form t2 %tdCCYY-NN-DD
//在%td后再设置年月日的显示格式,CCYY表示年,NN表示月,DD表示日
//本命令显示为“2014-11-17”表示2014年11月17日
-------
tsset t
//设置t为时间序列的时间变量
-------
2.2将不同时间序列按日期匹配变量
处理金融时间序列时常遇到的一个问题是交易日不匹配,哪天开市哪天不开市对于各个变量都可能不一样。
处理这个问题的做法是:统一不同时间序列的数据文件中的时间变量名,然后使用merge命令将不同数据文件整合。

merge m:1 t using "数据.dta"        //将“数据.dta”按t变量整合至当前数据中
对于这个命令的具体阐释请大家自行help merge
-------
2.3用文本标记坐标轴
以我的案例为例,我需要对持仓前10支股票画图,并使他们按顺序标记在x坐标轴上:
label define var1 1"公司名称" 2"..." 3"..." 4"..." 5"..." 6"..." 7"..." 8"..." 9"..." 10"...", replace      //var1是一个顺序1至10的变量,对他做标签
label values var2 var1                  //var2是对应的文本标签变量
tw (bar var3 var2, xlabel(1(1)10, valuelabel))                       //对不同var2画var3的柱形图并以标签标记
-------
3.美化图形命令
stata用的好,所有图都可以在stata里直接画好,美观度不亚于excel的哦~
-------
3.1修改颜色
首先放上各种可选项,图片来自Stata基础操作: 绘图概述(一)
stata可选颜色.png
修改颜色时,可以参考上面这张图片中的默认颜色,并且在此基础上调整透明度、强度等等。
也可以直接输入RGB值、CMYK值或HSV值:
color("# # #")               //RGB value; white = "255 255 255"             //使用RGB值选择颜色
color("# # # #")           //CMYK value; yellow = "0 0 255 0"              //使用CMYK值选择颜色
color("hsv # # #")         //HSV value; white = "hsv 255 255 255"       //使用HSV值选择颜色
-------
help colorstyle                  //关于颜色设置的命令说明
-------
//调整透明度

color(green%50)              //设置颜色为50%透明度的绿色

color("0 255 0%50")        //设置颜色为RGB值为0,255,0且透明度50%

color(%30)                    //设置当前颜色透明度为30%

-------

//调整颜色强度

color(green*.8)                    //设置颜色为强度0.8倍的绿色
color(purple*1.5)                  //设置颜色为强度1.5倍的紫色
color("0 255 255*1.2")          //设置颜色为RGB值0,255,255且1.2倍强度
color("hsv 240 1 1*.5")           //设置颜色为HSV值240,1,1且0.5倍强度

-------
3.1.1修改图形底色
我相信很多人和我以前一样,觉得stata画图的最大标志就是他的浅灰蓝色外框,一直以为这个是不能改的,直到打开了新世界的大门......
stata默认的浅灰蓝色外围颜色叫“light bluish-gray”,修改这部分颜色的命令是:

tw ...... , graphregion(color(white))     //修改外围区域颜色为白色
tw ...... , graphregion(fcolor(orange))     //修改外围区域填充颜色为橘色

*color和fcolor的区别在于“margin”(margin的宽窄亦可调节,见3.2.2),color包括margin部分,fcolor不包括margin部分。

截屏2020-07-30 13.20.22.png

类似地,修改内部作图区域颜色的命令:

tw ...... , plotregion(color(white))      //修改作图区域颜色为白色

tw ...... , plotregion(fcolor(black))     //修改作图区域填充颜色为黑色
-------
3.1.2修改所作图的颜色

tw (line var1 t, color(black))     //修改line图线条颜色为黑色

tw (scatter var1 t, mcolor(orange))     //修scatter图标记颜色为橘色

tw (line var1 t, color(black)) (connected var2 t, lcolor(red) mcolor(yellow))     //分别修改line图var1线条颜色为黑色,修改connected图var2标记颜色为黄色、连线颜色为红色

-------

3.2修改图形大小和比例

help regions_options              //关于区域和图形大小等设置的命令说明

-------

3.2.1修改整个作图区域的大小和比例

stata默认的图形比例是横向5.5inch纵向4inch,也就是5.5比4的一个矮胖的比例
对此我们可以自行修改设置:
tw ...... , xsize(10)            //修改x方向为10英寸(y方向仍为默认4英寸)
tw ...... , ysize(6)              //修改y方向为6英寸(x方向仍为默认5.5英寸)
tw ...... , xsize(10) ysize(6)  //修改x方向为10英寸,y方向为6英寸
-------
3.2.2修改作图区域边际大小
help marginstyle                                       //关于边际设置的命令说明
tw ...... , graphregion(margin(zero))           //设置外围区域边际为0
tw ...... , plotregion(margin(tiny))              //设置内部区域边际为极小
tw ...... , plotregion(margin(# # # #))       //设置内部区域边际左、右、下、上的具体值

-------

一楼有字数限制,后续整理更新在回帖中~


附件列表
截屏2020-07-27 13.20.16.png

原图尺寸 47 KB

截屏2020-07-27 13.20.16.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-7-27 15:04:43
谢谢分享!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-7-28 14:32:55
dxystata 发表于 2020-7-27 15:04
谢谢分享!
感谢版主支持~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-7-30 14:08:04

3.3修改图形线条和标记点的样式

help linestyle                //关于线条设置的命令说明

help marker_options      //关于标记设置的说明

*注:相关颜色修改见3.1.2

-------

3.3.1 修改线条样式

help linepatternstyle            //关于线条样式设置的命令说明

tw (line var1 t, lpattern(dash))     //修改line图线条样式为虚线

tw (line var1 t, lpattern(dot))      //修改line图线条样式为点

tw (connected var1 t, lpattern(dash_dot))     //修改connected图线条样式为点线交错

tw (connected var1 t, lpattern(longdash))     //修改connected图线条样式为长虚线

tw (connected var1 t, lpattern(_))     //修改connected图线条样式为长虚线(即_)

-------

3.3.2 修改线条粗细

help linewidthstyle        //关于线条粗细设置的命令说明

tw (line var1 t, lwidth(none))               //修改line图线条不显示

tw (line var1 t, lwidth(thin))                 //修改line图线条粗细为细

tw (connected var1 t, lwidth(thick))     //修改connected图线条粗细为粗

除了设定好的粗细外,还可以help relativesize设置任意想要的粗细

-------

3.3.3 修改标记样式

help symbolstyle         //关于标记样式设置的命令说明

tw (dot var1 t, msymbol(diamond))        //修改dot图标记为钻石型(其实就是斜着的正方形)

tw (dot var1 t, msymbol(triangle))         //修改dot图标记为三角形

tw (scatter var1 t, msymbol(circle))       //修改scatter图标记为圆形

tw (scatter var1 t, msymbol(O))            //修改scatter图标记为圆形(注意O大小写区分圆点的大小)

tw (connected var1 t, msymbol(X))       //修改connected图标记为X

tw (connected var1 t, msymbol(circle_hollow))     //修改connected图标记为空心圆

tw (connected var1 t, msymbol(Oh))     //修改connected图标记为空心圆

-------

3.3.4 修改标记大小

help markersizestyle     //关于标记大小设置的命令说明

tw (dot var1 t, msize(tiny))                  //修改dot图标记大小为微小

tw (scatter var1 t, msize(medlarge))     //修改dot图标记大小为中偏大

tw (connected var1 t, msize(huge))      //修改connected图标记大小为巨大

-------

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-8-2 18:11:03
3.4 显示点标签
help marker_label_options          //关于标记标签设置的命令说明
-------
3.4.1 指定标记变量
tw (scatter var1 t, mlabel(var1))     //为scatter图添加数值标记
-------
3.4.2 修改标签的相对位置
tw (scatter var1 t, mlabel(var1) mlabgap(#))     //修改数值标记的相对位置距离
*用数值表示的方式,100是graph区域长或宽中的较小值,mlabgap(2)表示距离等于graph区域长或宽中的较小值的2%
tw (scatter var1 t, mlabel(var1) mlabgap(*#))     //修改数值标记的相对位置距离
*用倍数表示的方式,mlabgap(*1)为默认距离,mlabgap(*1.5)表示改为默认距离的1.5倍
help relativesize         //相对位置距离的表示方式
-------
tw (scatter var1 t, mlabel(var1) mlabposition(#))     //修改数值标记的相对位置方向
help clockposstyle      //相对位置方向的表示方式
相对位置方向以时钟时间表示,就是特工打暗号时候说的“几点钟方向”(狗头),在以后说到关于title设置的时候也是使用这个方式说明方向。
截屏2020-08-02 17.19.27.png
-------
3.4.3 修改标签文本的角度
tw (scatter var1 t, mlabel(var1) mlabangle(#))     //修改数值标记的文本角度
tw (scatter var1 t, mlabel(var1) mlabangle(vertical))     //修改数值标记的文本角度
*用数值直接表示角度,也可以选择horizontal(水平方向,从左往右读,也即0°)、vertical(垂直方向,从下往上读,也即90°)、rvertical(反向垂直方向,从上往下读,也即270°或-90°)、rhorizontal(反向水平方向,标记是“倒立”的,也即180°)
Help anglestyle      //文本角度的表示方式
-------
3.4.4 修改标签的大小和颜色
tw (scatter var1 t, mlabel(var1) mlabsize(large))     //修改数值标记为大
help textsizestyle      //关于文本大小设置的命令说明
tw (scatter var1 t, mlabel(var1) mlabcolor(red))     //修改数值标记为红色
help colorstyle      //关于颜色设置的命令说明
-------
3.4.5 如果需要对不同点的位置有不同设置...
这里使用stata原说明文件的例子
generate pos = 3      //生成一个设置3.4.2中相对位置方向的变量pos,设置方向为3点钟方向
replace pos = 9 if country=="Honduras"      //将国家为洪都拉斯时的标签位置改为9点钟方向
scatter lexp gnppc if region==2, mlabel(country) mlabv(pos))      //使用mlabvposition(varname)(或者简写为mlabv)设置标签的相对位置方向
-------
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-8-4 10:21:16

3.5 坐标轴设置

help axis_options      //关于坐标轴设置的命令说明

-------

3.5.1 坐标轴选择

help axis_choice_options      //关于坐标轴选择的命令说明

//x、y轴最多各可以设置9个

tw (line var1 t, yaxis(1)) (line var2 t, yaxis(2))       //var1的y轴为左轴,var2的y轴为右轴

tw (line var1 t1, xaxis(1)) (line var2 t2, xaxis(2))       //var1的x轴为下轴,var2的x轴为上轴(此时y轴同为左轴)

-------

3.5.2 坐标轴标题设置

help axis_title_options      //关于坐标轴标题设置的命令说明

-------

//不显示标题

tw (line var1 t), xtitle(“”)      //不显示x轴标题

tw (line var1 t), xtitle(“”) ytitle(“”)      //不显示x和y轴标题

//注意双引号应为英文输入法

-------

//修改标题

tw (line var1 t), xtitle(“第一”)      //修改x轴标题为第一

//注意双引号应为英文输入法

-------

//修改指定坐标轴的标题

tw (line var1 t, yaxis(1)) (line var2 t, yaxis(2)), ytitle(“第一”, axis(1))      //修改第一条y轴(即左轴)标题为第一

tw (line var1 t, yaxis(1)) (line var2 t, yaxis(2)), ytitle(“第一”, axis(1)) ytitle(“第二”, axis(2))      //修改第一条y轴(即左轴)标题为第一,第二条y轴(即右轴)标题为第二

//注意双引号应为英文输入法

-------

//为一条坐标轴生成或修改多行标题

tw (line var1 t), xtitle(“第一行” “第二行”)      //修改x轴标题为两行及相应内容

tw (line var1 t), xtitle(“第一行” “第二行” “第三行” “第四行”)      //修改x轴标题为四行及相应内容

tw (line var1 t), xtitle(“第一行” “第二行” “第三行”) xtitle(“第四行”, suffix)      //在原有标题基础上,在最后增加一行标题,效果同上

tw (line var1 t), xtitle(“第零行” “第一行” “第二行” “第三行”)      //修改x轴标题为四行及相应内容

tw (line var1 t), xtitle(“第一行” “第二行” “第三行”) xtitle(“第零行”, prefix)      //在原有标题基础上,在最前增加一行标题,效果同上

//suffix和prefix两个命令多用于重复画图时,目前看起来似乎有些鸡肋,而stata自身对此给出的例子(使用sts graph命令绘制KM生存曲线)不属于经济学范畴

//注意双引号应为英文输入法

-------

//修改特殊坐标轴的标题

tw (scatter var1 t), ttitle(“时间序列”)      //修改时间序列中时间变量坐标轴的标题

tw (contour z y x), ztitle(“等高线”)       //修改contour命令(等高线图)中的contour legend轴的标题

//注意ztitle仅适用于contour图的情况!

-------

3.5.3 坐标轴标题样式的设置

help textbox_options      //关于坐标轴标题样式设置的命令说明

//内容与修改点线颜色样式等相似,不再赘述

-------


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群