【问题标题】:How to make additional labels in barchart in Stata如何在Stata的条形图中制作附加标签
【发布时间】:2015-06-29 17:16:37
【问题描述】:

我是 Stata 的新手,如果有人能帮助我弄清楚如何在我的条形图中添加其他标签,我将不胜感激。

我有 5 个类别的频率(比如说 Apple、Orange、Banana、Grape、Lemon),并且想制作一个条形图来比较这些类别的百分比(Y 上的比例是百分比)还想在外部添加频率数据作为标签的栏。

但是,我想在图表上合并与每个类别相关的更多数据:

我在 Excel 中计算了两个索引(CS 和 DS),值分别在 0 和 1 之间以及 -1 和 0 之间, 所以对于每个类别,我有两个 CS 和 DS 索引,我需要在每个类别的每个栏内显示它们。

所以:

var1 (categories): Apple, Orange, Banana, Grape, Lemon
var2 (frequencies): 65, 20, 1, 0, 39
var3 (CS index): 0.25, 0.12, 0, 0.42, 0.09
var4 (DS index): -0.15, -0.46, 0, -0.12, -0.2

看来我需要运行twoway 命令但它失败了。

我已经使用下面的代码大致得出了我想要比较的类别,但我不知道如何添加其他数据:

 graph hbar (sum) var2, over(var1) blabel(bar, format(%9.3g)) asyvars
 percentages  showyvars bar(1, color(gs6)) bar(2, color(gs6)) bar(3,
 color(gs6)) bar(4, color(gs6)) bar(5, color(gs6)) bar(6, color(gs6))
 legend (off) bargap(100) ytitle("Percentage", size(3.5))
 graphregion(fcolor(white))  plotregion(margin(zero))

【问题讨论】:

  • 我忘了说条应该是水平的,百分比表示总水果的份额。

标签: label bar-chart stata two-way


【解决方案1】:

关键点:通过切换到twoway bar 并使用字符串变量作为标记标签显示额外的文本,这个问题变得最简单。

我们无法评论您的 twoway 代码有什么问题,因为您没有显示它。

具体而言,您的示例和设计提出了不可能的要求。一个条的长度必须为零,另一个非常小,因此您不能在其中添加额外的文本。但是这段代码展示了一些技巧:

clear 
set scheme s1color 

input str6 fruit frequency CS DS 
Apple    65    0.25   -0.15 
Orange   20    0.12   -0.46
Banana   1     0      0
Grape    0     0.42   -0.12
Lemon    39    0.09   -0.2 
end 

encode fruit, gen(Fruit)
su frequency
gen percent = 100 * frequency/r(sum)

twoway bar percent Fruit, horizontal barw(0.8) yla(1/5, valuelabel ang(h) noticks) bfcolor(none)

gen x = 3
gen text1 = "CS:" + string(CS, "%4.2f") 
gen text2 = "DS:" + string(DS, "%4.2f")
gen y1 = Fruit + 0.2
gen y2 = Fruit - 0.2 

twoway bar percent Fruit, horizontal barw(0.8) yla(1/5, valuelabel ang(h) noticks) bfcolor(none) ///
|| scatter y1 x , ms(none) mlabpos(3) mlab(text1) ///
|| scatter y2 x , ms(none) mlabpos(3) mlab(text2) legend(off) xtitle(percent) ///
|| scatter Fruit percent, ms(none) mlabpos(3) mlab(percent) xsc(r(0, 56)) 

这是结果图:

【讨论】:

  • 感谢亲爱的尼克,它运行良好。另一个快速的问题:正如我在上面提到的,我希望将频率作为我的条形标签(而不是百分比),但 Y 轴和条形大小显示百分比。实际上我想要的是用频率条标签替换百分比条标签。
  • 在此图上,x 轴显示百分比。但您需要做的就是更改哪个变量显示为标记标签。
  • 我需要颠倒分类数据的顺序(例如,Apple 在顶部)。我尝试过反向命令或 xalternate,但不允许使用选项。请你帮我输入正确的命令。谢谢
  • 你需要ysc(reverse)这个选项。
  • 再次感谢,我想我找到了我应该接受的方式。如果我错过了其他东西,请告诉我。顺便说一句,我找不到改变双向条形图中条形之间间隙宽度的命令。有什么办法吗,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
相关资源
最近更新 更多