【问题标题】:Drawing a complicated bar graph in Stata在Stata中绘制复杂的条形图
【发布时间】:2013-09-04 18:38:13
【问题描述】:

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

所以,我要放入 x 轴的变量是:

phys
emo
soc
sch

它们都是从 0 到 100 的分数,显示了生活质量,我想在 x 轴上用一个具有两个类别(moderatehigh)的变量来划分这些分数。我唯一能做的似乎是:

gr bar phys emo soc sch, over(Village) 

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

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

【问题讨论】:

  • 样本数据可以让人们玩这个。
  • 请提供样本数据。
  • @Exodia:你发现下面的答案有用还是你还在坚持?

标签: graph stata


【解决方案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)

然后使用显示选项使条形标签更小并更好地显示,改变颜色等。

您可以这样做(无需重塑数据):

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

【讨论】:

  • 这是否是 OP 想要的还不清楚(你是第三个要求样本数据的人),但这是建设性的。 egen cat = group(state village), label 是获取复合变量的另一种方法。
  • 是的,这是一种非常干净的方法。感谢分享技巧。
猜你喜欢
  • 2020-11-04
  • 2018-05-20
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
相关资源
最近更新 更多