我试图在y轴上为每个单独的变量绘制一个条形图,然后根据类别变量将它们分开。
所以,我放在x轴上的变量是:
phys
emo
soc
sch
它们都是从0到100的分数,它们显示了生活质量,我想通过一个带有两个类别(moderate
或high
的变量在x轴上分割这些分数。我唯一能做的就是:
gr bar phys emo soc sch, over(Village)
将x轴拆分为Village
(high
或moderate
),然后将其中的每一个拆分为4个phys
,emo
类别, soc
,sch
。由于这四个变量都是分开但具有相同的分数,因此它们不能成为Stata中的一个类别,因为它标记了x轴0-100,这不是我想要的。
如果有人能想出一种方法来帮助或将四者组合成一个变量,以便我可以使用over(x)
选项,那将非常有用!
答案 0 :(得分:1)
在我看来,你最多有8个数据点,在这种情况下,我通常建议在MS Excel中使用这样的图形。但是,根据您的数据描述,您可以执行以下操作:
foreach i in phys emo soc sch {
rename `i' _`i'
}
reshape long _, i(village) j(state) string
g cat=state+"-"+village
gr bar _, over(cat)
然后使用显示选项使条形标签更小和更小。很好地展示,改变颜色等等。
OR
你可以这样做(不重塑你的数据):
graph bar phys emo soc sch, over(village) bargap(-30) ///
legend( label(1 "Physical") label(2 "Emotional") label(3 "Social") label(4 "School") )
顺便说一下,对我来说很奇怪你说X轴正以0-100的比例出现。使用此命令不应该发生这种情况,并且数据是按照您描述的方式设置的。此外,“变量是独立的,但具有相同的分数” - 真的不知道你在这里指的是什么。发布您的数据以获得更好的答案....
以下是我使用的假数据,它与我的代码一起使用:
village phys emo soc sch
high 87 65 79 45
moderate77 64 55 57