如何在 ggplot 中使用 facet 将 2 个类别与整个类别进行比较

How to compare 2 categories to the whole categories using facet in ggplot

Hi 想使用 facet_grid 或 facet_wrap 或 ggplot 中的其他函数将两个类别与整个类别进行比较。例如,我想将医院 3 和 4 的统计数据与整个医院进行比较。

Hospital<-c("Hosp1","Hosp1","Hosp1","Hosp1","Hosp1",
            "Hosp2","Hosp2","Hosp2","Hosp2","Hosp2",
            "Hosp3","Hosp3","Hosp3","Hosp3","Hosp3",
            "Hosp4","Hosp4","Hosp4","Hosp4","Hosp4")
Disease<-c("D1","D1","D2","D2","D3",
           "D1","D1","D1","D3","D3",
           "D3","D3","D2","D2","D3",
           "D1","D1","D2","D2","D2")

data<-data.frame(Hospital,Disease)

plot<-ggplot(data, aes(x=Disease,fill=Disease))+
  geom_bar()+facet_grid(~Hospital)+coord_flip()

使用facet_grid,我有一个比较四家医院的图表,我不想要。

我宁愿在不经过“grid.arrange”的情况下使用这样的分面,因为我想显示所有图表的所有疾病类别(即使它们为空)(以便于比较)和我不希望每个图表都显示 x.axis 标签,因为它需要很多 space

wh<-ggplot(data, aes(x=Disease,fill=Disease))+
  geom_bar()+coord_flip()+labs(title = "whole hospital")

H3<-ggplot(data[data$Hospital=="Hosp3",], aes(x=Disease,
      fill=Disease))+ geom_bar()+coord_flip()+
  labs(title = "hospital3")

H4<-ggplot(data[data$Hospital=="Hosp4",], aes(x=Disease,
       fill=Disease))+ geom_bar()+coord_flip()+
  labs(title = "hospital4")

grid.arrange(wh,H3,H4,ncol=3)

如果您的数据不是太大,一种方法是将数据框绑定在一起,添加另一列来指示数据集(或医院),然后用小平面绘制:

library(dplyr)
library(ggplot2)


rbind(data,subset(data,Hospital == "Hosp3"),subset(data,Hospital == "Hosp4")) %>%
mutate(hospital=rep(c("whole hospital","Hosp3","Hosp4"),
c(nrow(data),sum(data$Hospital == "Hosp3"),sum(data$Hospital == "Hosp4")))
) %>%
mutate(hospital=factor(hospital,levels=c("whole hospital","Hosp3","Hosp4"))) %>%
ggplot(aes(x=Disease,fill=Disease))+ geom_bar()+coord_flip()+
facet_wrap(~hospital,scale="free_y")

根据gghighlight

这个怎么样

library(ggplot2)
library(dplyr)

data_all <- 
  data %>% 
  mutate(Hospital = "Hosp_all") %>% 
  group_by(Disease) %>% 
  summarise(total = n())

data %>% 
  filter(Hospital %in% c("Hosp3", "Hosp4")) %>% 
ggplot(aes(x = Disease, fill = Disease))+
  geom_col(data = data_all, aes(Disease, total),  fill = "gray80")+
  geom_bar()+
  coord_flip()+
  facet_wrap(~Hospital)+
  theme(legend.position = "bottom")

reprex package (v0.3.0)

于 2020-06-23 创建