graphpad分组百分⽐柱状图_Stata⾥⾯的三种柱状图
三种样式的柱状图,你更喜欢哪种呢?
R⾥⾯的ggplot2包可绘制的柱状图总共来说的话有三种,分别是identity、fill和dodge。那么如何在Stata中也画出相应的三种类型的图呢?⾸先以最简单的柱状图⼊⼿:
use diamonds,clear
* 这份数据集包含了 53940 颗钻⽯的价格和其它属性数据:
* carat:钻⽯的重量(克拉)
* cut:钻⽯的切⼯(五分组变量:Fair, Good, Very Good, Premium, Ideal)
* color:钻⽯的颜⾊
* clarity:钻⽯的纯净度(⼋分组变量)
* price:钻⽯的价格
contract cut //这个时候不能⽤collapse,collapse⾥⾯的percent是计算⾮缺失值的百分⽐,这个命令在进⾏数据预处理时⽐较好⽤,但在此处不好⽤。
tw bar _freq cut, fcolor(green%50) barwidth(0.8) xlab(, val)
上⾯展⽰的是tw bar的柱状图,其实也可以使⽤gr bar来实现同样的操作(⼀定要注意tw bar和gr bar两个是不同的命令),代码如下:
use diamonds,clear
gr bar , over(cut) bar(1,color(green%50))  ///
blab(bar,pos(inside) format(%6.2f) size(small))
两者最⼤的区别在于纵轴,但是反映出来的信息其实是⼀样的。⽽且gr bar可以通过blab()选项来显⽰每⼀个柱条的对应数值,⽽tw类型的bar应该是没有这个选项的。⽽且,⾮要折腾使⽤gr bar做出纵轴为频数的柱状图的话,也不是不可以,代码如下:
use diamonds.dta, clear
gen id = _n
gr bar (count) id ,over(cut) bar(1,color(green%50)) ///
blab(bar,pos(inside) format(%6.2f) size(small))  yti(Frequency)
效果如下:
OK,已经做出了⼤概,但是如果想让我们的图形更具有视觉上的冲击⼒的话,那么我们就得给不同的
柱体加上不同的颜⾊,那么怎么操作呢?很简单,使⽤tw bar进⾏图层的叠加即可。
use diamonds, clear
contract cut
tw ///
bar _freq cut if cut == 1, fc(red) barwidth(0.8) || ///
bar _freq cut if cut == 2, fc(yellow) barwidth(0.8) || ///
bar _freq cut if cut == 3, fc(gold) barwidth(0.8) || ///
bar _freq cut if cut == 4, fc(blue) barwidth(0.8) || ///
bar _freq cut if cut == 5, fc(purple) barwidth(0.8) ///
xlab(, val) leg(off)
同样的,gr bar也可以实现类似的功能:
use diamonds, clear
gen id = _n
gr bar (count) id ,over(cut) ///
asyvars ///
bar(1, color(red)) ///
bar(2, color(yellow)) ///
bar(3, color(gold)) ///
bar(4, color(blue)) ///
bar(5, color(purple)) ///
leg(pos(11) col(3)) ///
blab(bar,pos(inside) format(%6.2f) size(small)) ///
stata怎么发音
yti(Frequency)
以上就是只有⼀个分组变量的情况,但是更多时候往往是多个分组变量的组合。例如想研究⼀个班上男⽣和⼥⽣不同籍贯,这个时候就存在两个分组变量:性别和籍贯。
⾸先第⼀种,对应ggplot2⾥⾯的fill
use diamonds, clear
colorscheme 8, palette(Set1)
gr bar, over(clarity) over(cut) ///
stack asyvars yti(count) ///
leg(ti(clarity)) ///
bar(1, color("`r(color1)'")) ///
bar(2, color("`r(color2)'")) ///
bar(3, color("`r(color3)'")) ///
bar(4, color("`r(color4)'")) ///
bar(5, color("`r(color5)'")) ///
bar(6, color("`r(color6)'")) ///
bar(7, color("`r(color7)'")) ///
bar(8, color("`r(color8)'")) ///
leg(pos(11) size(*0.8) col(4)) ///
blab(bar,pos(inside) format(%4.1f))
这个图的优势就在于可以清楚的看出不同cut的占⽐份额,⽽且也兼顾到了在同⼀cut中不同clarity的占⽐份额。但是由于有的占⽐太少,导致显⽰的数字很乱,此时我们可以再做进⼀步的分析,看⼀下同⼀个cut中,占⽐份额的具体多少。代码也很简单,加上⼀个precent选项就可以了。
gr bar (percent) id , over(clarity) over(cut) ///
stack asyvars yti(percent) ///
bar(1, color("`r(color1)'")) ///
bar(2, color("`r(color2)'")) ///
bar(3, color("`r(color3)'")) ///
bar(4, color("`r(color4)'")) ///
bar(5, color("`r(color5)'")) ///
bar(6, color("`r(color6)'")) ///
bar(7, color("`r(color7)'")) ///
bar(8, color("`r(color8)'")) ///
leg(off) percent

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。