有条件的彩色条形图

问题描述 投票:1回答:1

我想有条件地为这些镜子的条形图着色。

我想根据疾病和医院着色。我希望前两个相同字符的疾病具有相同的颜色(即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()

我所知道的唯一方法是按医院或根据疾病单独着色。

[enter image description here enter image description here

r ggplot2 bar-chart colorbar
1个回答
0
投票

您可以添加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创建

© www.soinside.com 2019 - 2024. All rights reserved.