如何在Stata中创建以0为中心的堆叠条形图
解决方案:Stata制作以0为中心的堆叠条形图
问题背景
刚接触Stata,当前用graph bar生成的是1-100刻度的堆叠条形图,希望改成以0为中心、刻度范围-100到100的样式,让正向分类(绿色)在0右侧,负向分类(红色)在0左侧。
实现步骤
Stata原生的graph bar默认会将所有变量按正值堆叠,要实现中心0的效果,核心是把负向变量转为负值,再进行堆叠:
- 转换负向变量为负值
先将代表负面态度的变量转为负数,这样堆叠时它们会向0的左侧/下方延伸:
gen neg_slightly_negative = -slightly_negative gen neg_strongly_negative = -strongly_negative
- 绘制中心0的堆叠条形图
用转换后的变量重新绘图,设置y轴范围、刻度并添加中心参考线:
graph bar strongly_positive slightly_positive neg_slightly_negative neg_strongly_negative, over(asset_class_name) stack /// bar(1, fcolor(green) fintensity(inten80)) bar(2, fcolor(green) fintensity(inten50)) /// bar(3, fcolor(red) fintensity(inten50)) bar(4, fcolor(red) fintensity(inten80)) /// yscale(range(-100 100)) ylabel(-100 "-100" -50 "-50" 0 "0" 50 "50" 100 "100") /// yline(0, lcolor(black)) name(centered_bar)
说明
- 转换负变量后,Stata会自动将负值堆叠在0的下方(垂直条形图),绿色的正向分类在0上方,红色的负向分类在0下方,形成中心对称的效果
yscale(range(-100 100))强制y轴范围覆盖-100到100,ylabel自定义刻度标签yline(0)添加黑色的中心参考线,更清晰区分正负区域
内容的提问来源于stack exchange,提问作者alwaystuck
相关产品推荐
相关产品推荐

