更改ggplot facet_wrap的构面标题格式

时间:2018-03-14 16:57:01

标签: r ggplot2 facet-wrap

使用以下代码获取以下数据生成的图:

library(dplyr)

dd<-data.frame(matrix(0,36,1))
dd$drug<-c("x","x","x","x","x","x","x","x","x","y","y","y","y","y","y","y","y","y","z","z","z","z","z","z","z","z","z","w","w","w","w","w","w","w","w","w")
dd$prev<-c(10,11,12,11,12,13,12,13,14,10,11,12,11,12,13,12,13,14,10,11,12,11,12,13,12,13,14,10,11,12,11,12,13,12,13,14)
dd$country<-c("a","a","a","b","b","b","c","c","c","a","a","a","b","b","b","c","c","c","a","a","a","b","b","b","c","c","c","a","a","a","b","b","b","c","c","c")
dd$year<-c(15,16,17,15,16,17,15,16,17,15,16,17,15,16,17,15,16,17,15,16,17,15,16,17,15,16,17,15,16,17,15,16,17,15,16,17)
dd<-dd[,-1]

dd <- dd %>%
  group_by(drug) %>%
  arrange(country) %>%
  ungroup()

ggplot(dd,aes(x=factor(year),y=prev,fill = factor(country,levels=c("a","b","c")),pos="dodge"))+
  geom_col(col = "black",size=0.25,pos=position_dodge(0.9)) +
  facet_wrap(~factor(drug, levels(factor(dd$drug))[c(2,1,3,4)]),strip.position="bottom",as.table=T,scales="free_x")+
  scale_fill_manual(values = c("a" = "white",
                           "b" = "lightskyblue2",
                           "c" = "lightpink"),
                guide = F)+
  scale_x_discrete(name="Year",labels=c(2015,2016,2017))+
  scale_y_continuous(name="Prevalence (%)")+
  theme_classic()

enter image description here

我想移动以下内容但无法找到方法:

1-使用构面标题在框上方的每个构面的x轴上移动年份 2-删除小平面标题周围的框 3-增加2个顶部和2个底部刻面之间的空间

结果应大致如下所示: enter image description here

非常感谢!!! 马可

1 个答案:

答案 0 :(得分:1)

检查?theme并阅读strip.*的所有选项。相关的是安置和背景。对于间距,有panel.spacing

ggplot(mtcars, aes(factor(am))) +
  geom_bar() +
  facet_wrap(~cyl, strip.position = "bottom", nrow = 2, scales = "free") +
  theme_classic() +
  theme(strip.placement = "outside",
        strip.background = element_blank(),
        panel.spacing.y = unit(2, "lines"))

enter image description here