Отформатируйте внутренние линии сложенного geom_bar внутри geom_tile ggplot2 - PullRequest
3 голосов
/ 23 сентября 2019

это может иметь отношение к этому вопросу: format-internal-lines-of-a-stacked-geom-bar-ggplot , но я все еще не могу решить эту проблему, так как я все еще новичок.У меня есть много столбцов для этого графика, вот только примерные данные.Я просто хочу сохранить внешнюю границу и стереть внутреннюю границу в уложенной панели.Пожалуйста, помогите мне:

data.frame(var1=c(rep("A1",4), rep("A2",4), rep("A3", 4), rep("A4", 4), rep("A5", 4), rep("A6", 4)), 
          var2=c(rep("A2",4), rep("A3", 4), rep("A4", 4), rep("A5", 4), rep("A6", 4), rep("A7", 4)), 
          varb=c(rep(c("S", "T", "U", "N"), 6)), value=c(80, 0, 20, 0, 
          20,30,30,20,0,60,40,0,100,0,0,0,0,60,0,40,0,60,0,40))->test

ggplot(test, aes(var2, var1, fill = varb))+ 
  geom_tile(aes(x=var1, y=value, width = 0.9, height=0.7), position = "stack", 
  colour="green")+facet_grid(var2~., space="free",scales="free")+
  scale_fill_manual(values=c("#99d594", "#fc8d59", "#ffffbf", "grey60")) 

enter image description here

1 Ответ

2 голосов
/ 24 сентября 2019

В основном вам нужно добавить две фигуры отдельно, одну geom_tile без цвета и другую geom_col с прозрачной заливкой.

И я считаю, что в вашем графике есть некоторые ошибки, например: ось y должна бытьvalue вместо var1.

ggplot(test, aes(x = var2, fill = varb))+ 
    geom_tile(aes(y = value, width = 0.9, height=0.7), position = "stack") +
    geom_col(aes(y = max(value)),position = "identity",alpha = 0,color = "black") +
    facet_grid(var2~., space="free",scales="free") +
    scale_fill_manual(values=c("#99d594", "#fc8d59", "#ffffbf", "grey60")) 

enter image description here

...