代码之家  ›  专栏  ›  技术社区  ›  Brandon Bertelsen

Ggplot2标记多层条形图

  •  5
  • Brandon Bertelsen  · 技术社区  · 14 年前

    我要做的是在下面的示例中用它们各自的数据标签标记两个gem_bar()。到目前为止,我只能让其中一个出现:

    dp-():

    x<-structure(list(variable=c(“a”,“b”,“c”),f=c(0.98,0.66,
    0.34),m=c(0.75760989010989,0.24890977443609,0.175125)),.name=c(“变量”,
    “f”,“m”),row.name=c(na,3l),class=“data.frame”)。
    
    ggplot(x,aes(variable,f,label=粘贴(f*100,“%”,sep=“)))+
    GeoMuxBar()+
    geom_文本(大小=3,hjust=1.3,colour=“white”)。+
    geom_bar(aes(variable,m,label=粘贴(m*100,“%”,sep=“)),fill=“紫色”)。+
    COODION FLIP()
    < /代码> 
    
    

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

    dp-():

    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 回复  |  直到 14 年前
        1
  •  6
  •   Ian Fellows    14 年前

    这对您有何作用:

    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()
    
        2
  •  3
  •   Greg Snow    14 年前

    你可能想考虑另一种方法。

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

    如果主要的目标是比较数字,那么你得到的是一个布局不好的表(有彩色背景),如果它们排列正确,比较数字会更容易。

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