堆叠条形图中的边框被条形覆盖

3

我正在尝试制作一个堆叠条形图,在其中一些条形上加上黑色边框,而其他的则没有。为了实现这个目标,我根据变量choose设置颜色。当它为true时,边框是黑色的,否则是透明的。

问题在于:当第一个条形有边框时,边框的右侧会被第二个条形覆盖。

以下是我的代码和问题的图像:

    #Sample Data
    Var1 <- rep(c("A1","A2"),4)
    Var2 <- c("Q1","Q1","Q2","Q2","Q3","Q3","Q4","Q4")
    Freq <- c(4,2,6,2,6,4,9,3)
    choose <- c(F,F,T,F,F,T,F,T)

    df <- as.data.frame(cbind(Var1,Var2, Freq,choose))


    g<- ggplot(df, aes(x=factor(Var2), y=Freq))+ 
      geom_bar(stat="identity", aes(fill = Var1, color = choose), size = 3) +
      scale_color_manual(values = c('FALSE' = 'transparent', 'TRUE' = 'black'))+
      coord_flip()

    g

问题

我试图通过在fill = NA的条形之后绘制边框来修复它,这确实在条形的顶部绘制了边框,但位置不正确。

    g<- ggplot(df, aes(x=factor(Var2), y=Freq))+ 
      scale_color_manual(values = c('FALSE' = 'transparent', 'TRUE' = 'black'))+
      geom_bar(stat="identity", aes(fill = Var1))+
      geom_bar(stat="identity", aes(color = choose),  fill = NA, size = 3)+
      coord_flip()

    g

有什么想法可以解决这个问题吗?

你可以在第二个 geom_bar 中添加 group = Var1,这样就可以正确地堆叠事物了。 - aosmith
这解决了问题。非常感谢!你能写一个答案吗?那我就把这个问题标记为已解决。 - Martin
1个回答

2

Var1映射到group美学,以便在第二个geom_bar中堆叠物品。

ggplot(df, aes(x=factor(Var2), y=Freq))+ 
    scale_color_manual(values = c('FALSE' = 'transparent', 'TRUE' = 'black'))+
    geom_bar(stat="identity", aes(fill = Var1))+
    geom_bar(stat="identity", aes(color = choose, group = Var1),  fill = NA, size = 3)+
    coord_flip()

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