我想有条件地为这些镜子的条形图着色。
我想根据疾病和医院着色。我希望前两个相同字符的疾病具有相同的颜色(即D4001和D4002将具有相同的颜色; D3000,D3001和D3003将具有相同的颜色)。
我还想对医院的颜色进行分层,以使同一疾病的一家医院之间的透明度或对比度会有所不同(例如,医院A中的疾病D4为红色,而医院A中的疾病D4为红色医院B将是透明的红色)。
set.seed(0)
ID=1:20
Hospital<-sample(c(rep("A",10),rep("B",10)))
Disease<-c("D1000",rep("D2001",2),rep("D2000",3),rep("D3000",4),
rep("D3001",2),rep("D3003",4),rep("D4001",3),"D4002")
data$Disease<-as.factor(data$Disease)
data<-data.frame(ID,Hospital,Disease)
datacount<-data%>%group_by(Hospital,Disease)%>%count
datacount$n2<-ifelse(datacount$Hospital=="B",datacount$n,-datacount$n)
ggplot(datacount,aes(x=Disease,y=n2))+
geom_col(aes(fill=Hospital))+coord_flip()
我所知道的唯一方法是按医院或根据疾病单独着色。
您可以添加Alpha来定义医院。 (very similar thread here)。将子串用于疾病的功劳归功于user Dave2e
ggplot(datacount,aes(x=Disease, y=n2)) +
geom_col(aes(fill=substr(Disease, 1,2))) +
scale_fill_discrete(name="Disease") +
geom_col(aes(alpha=Hospital), fill = "grey") +
scale_alpha_manual(values = c(0.1,0.5)) +
coord_flip()
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS9XZUVnUnpaLnBuZyJ9” alt =“”>
由reprex package(v0.3.0)在2020-04-30创建