Forest plot pour plusieurs outcomes avec ggplot

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Antoine Lanot
Messages : 1
Enregistré le : 13 Fév 2017, 07:42

Forest plot pour plusieurs outcomes avec ggplot

Messagepar Antoine Lanot » 22 Déc 2019, 22:08

Bonjour,

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.

Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité