Удельный барплот в R ggplot - PullRequest
0 голосов
/ 07 мая 2018

Здравствуйте, попробую в последний раз,

Я делаю все возможное, чтобы нарисовать барплот, как показано на следующем рисунке: Однако это кажется невозможным с R.

Есть идеи? Заранее спасибо,

Peter

enter image description here

Прикрепленный код, который я использовал.

groupe2<-rep(c(rep("P",4),rep("I",4)),2)
groupe<-rep(c("PPP","PPI","PIP","PII","IPP","IPI","IIP","III"),2)
OR_A<-c(1.00,0.86,0.88,0.90,0.77,0.68,0.77,0.70)
ICinf_A<-c(NA,0.70,0.72,0.76,0.60,0.50,0.61,0.61)
ICsup_A<-c(NA,1.06,1.07,1.06,1.00,0.92,0.96,0.81)
OR_B<-c(1.00,0.97,1.01,0.81,0.73,0.69,0.61,0.58)
ICinf_B<-c(NA,0.78,0.77,0.62,0.61,0.57,0.50,0.52)
ICsup_B<-c(NA,1.20,1.28,1.05,0.81,0.82,0.71,0.65)
OR_C<-c(1.00,1.03,0.86,0.65,0.68,0.58,0.47,0.37)
ICinf_C<-c(NA,0.84,0.67,0.50,0.59,0.49,0.40,0.33)
ICsup_C<-c(NA,1.27,1.10,0.86,0.78,0.69,0.56,0.41)
Cohort<-c(rep(" PC",8), rep("RIC",8))#, rep("RIC",8))

OR<-c(OR_A,OR_B)#,OR_C)
ICinf<-c(ICinf_A,ICinf_B)#,ICinf_C)
ICsup<-c(ICsup_A,ICsup_B)#,ICsup_C)

rm(dataOR)
dataOR<-data.frame(OR,groupe,Cohort,groupe2,ICinf,ICsup)

names(dataOR)
dataOR[, "groupe"] <- factor(dataOR[, "groupe"] , 
                             levels = c("PPP","PPI","PIP","PII","IPP","IPI","IIP","III"))

##########

library(ggdag)
ggplot(dataOR, aes(fill=outcome, y=OR, x=groupe)) +
  geom_bar(position="dodge", stat="identity", color = "gray95", size = 0.25) + 
  # scale_fill_brewer(palette="Blues")+
  scale_fill_manual(values = RColorBrewer::brewer.pal(5, "Blues")[3:5]) +
  geom_errorbar(aes(ymin=ICinf, ymax=ICsup), width=.4, position=position_dodge(.9))+
  geom_hline(yintercept=1) +
  geom_point(position = position_dodge(0.9), size = 0.5, show.legend = F) +
  scale_y_continuous(expand = expand_scale(mult = c(0, 0.05))) +
  facet_wrap(~groupe, nrow = 1, scales = "free_x") +
  labs(fill = NULL) +
  theme(legend.position = "top", 
        legend.key.height = unit(0.2, "cm"), 
        legend.background = element_rect(color = "black", size = 0.4), 
        axis.line = element_line(color = "black"),
        axis.text.x = element_blank(),
        axis.ticks = element_blank(),
        panel.grid.major.x = element_blank(),
        axis.title = element_text(face = "bold"))
...