在Stata中绘制一个复杂的条形图

时间:2013-08-21 21:31:54

标签: graph stata

我试图在y轴上为每个单独的变量绘制一个条形图,然后根据类别变量将它们分开。

所以,我放在x轴上的变量是:

phys
emo
soc
sch

它们都是从0到100的分数,它们显示了生活质量,我想通过一个带有两个类别(moderatehigh的变量在x轴上分割这些分数。我唯一能做的就是:

gr bar phys emo soc sch, over(Village) 

将x轴拆分为Villagehighmoderate),然后将其中的每一个拆分为4个physemo类别, socsch。由于这四个变量都是分开但具有相同的分数,因此它们不能成为Stata中的一个类别,因为它标记了x轴0-100,这不是我想要的。

如果有人能想出一种方法来帮助或将四者组合成一个变量,以便我可以使用over(x)选项,那将非常有用!

1 个答案:

答案 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