ggplot2标记多层条形图

6

我希望你能够为以下示例中的geom_bar()标注它们各自的数据标签。到目前为止,我只能让其中一个显示出来:

dput():

x <- structure(list(variable = c("a", "b", "c"), f = c(0.98, 0.66, 
0.34), m = c(0.75760989010989, 0.24890977443609, 0.175125)), .Names = c("variable", 
"f", "m"), row.names = c(NA, 3L), class = "data.frame")

ggplot(x, aes(variable, f, label=paste(f*100,"%", sep=""))) + 
geom_bar() + 
geom_text(size=3, hjust=1.3, colour="white") +
geom_bar(aes(variable, m, label=paste(m*100,"%",sep="")), fill="purple") + 
coord_flip()

多层条形图

请看黑色区域内部的数据标签。在同一张图中,我想在紫色区域内部完成相同的操作。

2个回答

7
这对您有何帮助:
这个问题是如何运作的?
ggplot(x, aes(variable, f, label=paste(f*100,"%", sep=""))) + 
geom_bar() + 
geom_text(size=3, hjust=1.3, colour="white") +
geom_bar(aes(variable, m, label=paste(m*100,"%",sep="")), fill="purple") + 
geom_text(aes(y=m,label=paste(round(m*100),"%",sep="")),size=3, hjust=1.3, colour="white") +
coord_flip()

我非常接近了!我尝试过使用geom_text()的层叠,但美学略有不同。谢谢! - Brandon Bertelsen

3
您可能需要考虑另一种方法。
如果图表的主要目的是比较条形的长度/位置,则在条形中包含数字会产生“模糊”的条形,使眼睛/大脑更难正确判断条形的长度/位置。
如果主要目标是比较数字,则您拥有的是一个布局不良的表格(带有丰富的背景),如果数字排列整齐,则比较数字更容易。
一些替代方案包括拥有单独的图表和表格(两者都正确布局),或将数字放置在边距中(正确对齐)而不是在条形上方,或创建具有条形图的边缘单元格的表格。您还可以考虑使用点图而不是条形图(ggplot2应该仍然可以轻松完成此操作),堆叠的条形图只允许合理地比较第1个(最左侧)类别和总数,在您的示例中,很难比较顶部和底部条形的黑色部分的相对大小。

1
就我个人而言,我更喜欢使用点图来展示数据,但有些老板就是不允许你改变。 - Brandon Bertelsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接