Условно цветные барплоты - PullRequest
1 голос
/ 30 апреля 2020

Я хотел бы условно раскрасить эти зеркала барплотов.

Я хочу раскрасить в соответствии с болезнью и больницей. Я хочу, чтобы болезни, у которых первые два одинаковых символа имели одинаковый цвет (т.е. D4001 и D4002 будут иметь одинаковый цвет; D3000, D3001 и D3003 будут иметь одинаковый цвет).

Я также хочу разделить цвет в больнице таким образом, чтобы прозрачность или контрастность барплота отличались в разных больницах для одного и того же заболевания (например, заболевание 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

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете добавить альфа, чтобы определить больницу. ( очень похожая тема здесь ). Кредит на использование подстроки для болезни предоставляется пользователю 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() 

Создано в 2020-04-30 Представить пакет (v0.3.0)

...