ggplot2标记多层条形图

时间:2010-09-27 22:45:10

标签: r ggplot2

我想要做的是在以下示例中使用各自的数据标签标记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()

Multilayered Bar Graph

看看黑色里面有一个数据标签。在同一个情节中,我想在紫色的内部做同样的事情。

2 个答案:

答案 0 :(得分:6)

这对您有何帮助:

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()

答案 1 :(得分:3)

您可能想要考虑不同的方法。

如果图表的主要目标是比较条形图的长度/位置,则在条形图中包含数字会产生“模糊”条形图,使眼睛/大脑更难以正确判断条形图的长度/位置。

如果主要目标是比较数字,那么你所拥有的是一张铺设不好的桌子(背景为彩色),如果数字正确排列,则更容易比较数字。

一些替代方案将包括单独的图形和表格(两者都正确布局),或将数字放在边距(正确对齐)而不是条形图的顶部,或创建一个在边缘单元格中显示条形图的表格。你可能还想考虑一个点图而不是条形图(ggplot2仍然可以很容易地做到这一点),叠加的条形图只允许合理比较第一个(最左边)类别和总数,在你的例子中,不容易比较顶部和底部条的黑色部分的相对大小。