条形图中的边框被条形图过度绘制

时间:2017-03-29 15:54:22

标签: r ggplot2 bar-chart

我正在尝试制作一个堆积条形图,其中一些条形图得到黑色边框而其他条形图则没有。为此,我根据变量选择设置颜色。当它是真的时,寄宿生是黑色的,否则它是透明的。

问题:当第一个柱子有一个边界时,边界的右边缘会被第二个柱子过度绘制。

这是我的代码和问题的图像:

    #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

Problem

我尝试修复它,通过在填充= 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

Problem fix

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分: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()