Je cherche à représenter sous forme d'un forest plot les résultats d'une analyse multivariée pour 2 outcomes: TF et DC.
Mon dataframe contenant les résultats des analyses multivariées est
ForrestFG_TF:
Code : Tout sélectionner
group cenTF lowTF highTF cenDC lowDC highDC
1 A 1.00 NA NA 1.00 NA NA
2 B 1.05 0.95 1.16 2.74 2.29 3.28
3 C 1.08 0.96 1.21 4.31 3.59 5.18
4 D 0.70 0.61 0.81 6.55 5.44 7.89
5 E 1.00 NA NA 1.00 NA NA
6 F 1.12 1.04 1.20 NA NA NA
7 G NA NA NA 1.00 NA NA
8 H NA NA NA 0.92 0.85 1.01
9 I 1.00 NA NA 1.00 NA NA
10 J 0.85 0.75 0.97 0.79 0.68 0.92
avec "cen" la valeur des Hazard Ratio, et "low" et "high" les valeurs d'IC95% pour mes 2 outcomes.
En m'inspirant de codes trouvés sur différentes sources, je parviens à un forest plot pour mes 2 outcomes TF et DC:
Code : Tout sélectionner
grapheLogFG_TFDC <- ggplot(data = ForrestFG_TF) +
geom_point(size= 1.5, shape=15, color = "brown3", alpha = 0.8, aes(cenDC, group)) +
geom_point( size= 1.5, shape=16, color = "Steelblue", alpha = 0.8, aes(cenTF, group)) +
geom_errorbarh(aes(xmax = highDC, xmin = lowDC, cenDC, group), color = "brown3", height=0.2) +
geom_errorbarh(aes(xmax = highTF, xmin = lowTF, cenTF, group), color = "Steelblue", height=0.2) +
geom_segment(mapping=aes(x=1, y=0, xend=1, yend= dim(ForrestFG_TF)[1]), size=0.5, linetype = "longdash") +
geom_hline(yintercept = 0) +
scale_x_continuous(breaks = c(0.6, 0.8, 1, 1.5, 2, 3, 4, 6),
labels = c(0.6, 0.8, 1, 1.5, 2, 3, 4, 6), trans="log10") +
labs(x="Adjusted sd-HR and 95% CI", y="") +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
panel.background = element_blank(),
axis.line = element_blank(),
axis.text.x = element_text(size= 6, colour="black"),
axis.ticks.x = element_line(colour="black"),
axis.title.x = element_text(size= 6, colour="black"),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
plot.margin = unit(c(0.1, 0, 0, -2.9), "lines") )
grapheLogFG_TFDC
Mon problème est qu'aucune légende ne s'affiche ainsi, et que je ne réussis pas à afficher une légende qui montrerait quelle couleur de point/segment correspond à quel outcome. La structure de mon dataframe initial n'est peut être pas la mieux adaptée?
Question subsidiaire, j'aimerai que mes barres d'erreurs pour le 2em outcome soit décalées de quelques pixels verticalement, pour ne pas se superposer avec celles du 1er outcome, mais je n'ai pas trouvé la commande approprié.
Par avance, merci de votre aide
PS: je sais qu'il existe le package "forestplot", mais les fonctionnalités proposées ne conviennent pas au résultat que je veux obtenir. J'utilise ensuite gridextra pour accoler à mon forest plot les noms des variables et les valeurs de HR et IC95.