用Stata去折腾一幅图 (以直方图为例)
前话(可以跳过):
今天无事可做,比较闲啊,觉得有必要找点儿事儿折腾一下。
Stata做图具有相对的规范性,掌握了一般的套路后,按照套路对应修改命令和参数后就做出来各种各样漂亮的图(没有审美感的人除外,例如...)
为了演示各种控制语句,我使用简单的直方图为例进行操作,可见下图:
image image图形是否变好看这个不一定,不过变化挺大,这意味控制的地方比较多。
进入正题:
一副图的操作控制一般可以分为几个部分(自己瞎分类的)
1. 特定图形本身特定的操作;
例子代码:
cd "C:\Users\liukuanbin\test2"//导入数据,sysuse表示使用软件自带的数据集
sysuse auto.dta,clear
--针对连续变量****--
(直方图分为连续变量和离散变量两种情况,大部分设置都一样,只有几个设置有差异,所以,只要掌握连续性就可以了)
delimit; //开启多行编辑模型,出现(;)才算一行输入完毕
histogram price, //针对变量price画直方图
bin(12) //指定分为几个组别做直方图(这里也可以使用width(#)直接指定每组的宽度)
percent //设置直方图的高度为密度(默认:对price标准正态化后,计算f(x)概率值)这里也可以用(fraction:样本比例)(frequency:落在范围内的样本量)(precent:用%表示比例)
addlabels //加入高度值标签
addlabopts(mlabposition(12) mlabgap(2) mlabangle(0) mlabsize(3.2) mlabcolor(dknavy)) //标签状态分别:位置,间距,旋转角度,标签大小,颜色;
vertical //设置竖向(horizontal为横向)
barwidth(1000) //设置直方图柱子的图显示宽度
start(0) //这个设置对标签显示位置有影响,建议默认
color(green) //设置图的颜色(内部填充和外线颜色) (不同颜色的代码可以help colorstyle)
fcolor(yellow) //设置柱子的填充颜色
fintensity(inten50) //设置填充颜色的饱和程度(取值:0-100)
lcolor(green) //单独设置柱子的外边缘线的颜色
lwidth(medium) //设置外边缘线的宽度(类型:help linewidthstyle)
lpattern(solid) //设置外边缘线的类型(类型:help linepatternstyle)
start(0) //(无用,为备注)lstyl(),bstyle(),pstyle()命令对外线,柱子,图形直接调用一些经典的设置类型
binrescale //
normal //添加一条基于本变量计算均值,方差对应的正太曲线
normopts(lpattern(dash) lwidth(medium) lcolor(red)) //这里同样可以直接用lstyle()和pstyle调用默认类型
kdensity //添加一条核密度图(什么是核密度,这个自行百度)
kdenopts(kernel(epan2) bwidth(1000)) //指定计算核密度的函数和选择带宽
2. 标题,副标题,备注等辅助操作,X,Y轴title的操作;
标题:
title("Stata中如何折腾一个图(折腾后) ",size(5)color(blue) margin(small) span position(12)) // title这里的设置与text里面的属性设置一直,不再赘言
ytitle("Percent:百分比",width(30) height(6)) // textbox类型,opt设置选择项一样
副标题及说明性:
subtitle("**我只是一个副标题",
nobox //不用边框
size(4) width(75) height(5) j(left)margin(small) ali(top)
position(12)) //设置副标题放置位置
图形加入备注性文字:
text(35 12500 "Datsun", //在图(x,y)位置添加显示内容
box //将文字内容用方框框起来
bcolor(green) //设置方框和被内部填充颜色
fcolor(yellow) //单独设置方框内部填充颜色
lstyle(refline) //单独设置方框线的类型
lcolor(gold) //单独设置方框线的颜色
bmargin(zero) //设置边缘向外的距离
place(east) //设置放置的位置(以设置的点画一个坐标轴,将空间划分为四个象限,就明白了)
orient(horizontal) //设置显示内容或者方框的放置方向(横竖)参考help orientationstyle
size(3.5) //设置文字的大小
color(red) //设置文字的显示颜色
justification(center) //在方框中对对齐情况设置
width(13) //设置方框的宽度
height(4)) //设置方框的高度
note("图的作用:为了演示Stata操作图形")
caption("我只是个备注")
3. 坐标轴的操作;
坐标轴需要区分两个概念:刻度和标签;
刻度:是指坐标轴上按照数值的大小指定轴位置话一个刻度小竖线
image标签:是指刻度下方或者左方的说明
imagextick(3000(1000)17000)// 告诉软件在那些位点画刻度线
xlabel(1000 "左" 10000 "中" 16000 "高")// 告诉软件在那些地方标注刻度标签以及位点上刻度标签的值
ytick(0(2)50)
ylabel(10 "很低" 20"较低" 30 "一般" 40 "较高" 50 "很高")
4. 图形绘图区域操作;
针对这个部分,首先需要了解清楚Stata做图的区域划分,借用官方的一幅图说明:
image画图区域分为: graph区域 和 plot区域两大区域,而两大区域里面又分为 outer 和 inner两个隔开的区域,这四个区域都是可以分别用命令控制的
控制graph outer area:
graphregion( //设置画图外围的颜色help colorstyle
fcolor(sand) //单独设置外围颜色显示
lstyle(grid) //外围框类型(颜色,宽度,类型一起设置)
lcolor(green) //单独设置外围框颜色
lwidth(thick) //单独设置外围线宽
lpattern(blank) //单独外围线框类型
控制graph inner area:
istyle(none) //设置inner graph region的属性,还有icolor/ifcolor/ilcolor/ilwidth/ilpattern来设置
控制plot outer area:
plotregion( //设置做图区域的属性,与上面设置外围区域属性一样
fcolor(sand)
lstyle(grid)
lcolor(sand)
lpattern(none)
控制plot inner area:
istyle(none) //设置inner plot region的属性,还有icolor/ifcolor/ilcolor/ilwidth/ilpattern来设置
margin(small)) //设置plot region的边缘宽度
ylabel(, nogrid) //去掉默认的横轴线,让图形显示的更加纯净
;// 出现前面设置的分割符,表示到这位置,前面的命令都只是一条命令而已
delimit cr// 清除分隔符状态,后面的命令不再受分割影响,每一个行都是一条命令
*-------------------------------------------------------------------------------------------------------------------------------------
后话:Stata能做的图很多,常见的图都能做,所以,无法每个图都去总结一次,其实最终要的就是那些通用的设置掌握好。具体到某个特定的模型,特定的图形设置命令很少,到时候help一下就好了~
无聊的总结,希望大家能有所获益; 如果还有其他一些设置没有总结到,也希望大家回复补充或者 回复提醒 ~
网友评论