ggplot2 : graphiques avec 2 axes Y est-ce possible ?

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

Patricia OBEID
Messages : 68
Enregistré le : 10 Avr 2017, 19:03

ggplot2 : graphiques avec 2 axes Y est-ce possible ?

Messagepar Patricia OBEID » 27 Nov 2018, 05:44

Bonjour
je souhaiterais savoir s'il est possible avec ggplot2 de réaliser des graphiques avec deux axes Y.
J'ai 8 traitements avec des mesures sur 4 jours. Je m'intéresse au nombre de cellules d'une part et d'autre part aux cellules qui expriment un marqueur spécifique.
Je voudrais représenter sur le même graphique le nombre total de cellules et le nombre de cellules qui expriment mon marqueur pour voir l'influence des traitements.
Merci pour vos suggestions.
Patricia


Patricia OBEID
Messages : 68
Enregistré le : 10 Avr 2017, 19:03

Re: ggplot2 : graphiques avec 2 axes Y est-ce possible ?

Messagepar Patricia OBEID » 27 Nov 2018, 07:39

Merci François, je vais étudier ces pistes.
Bonne journée
Patricia

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: ggplot2 : graphiques avec 2 axes Y est-ce possible ?

Messagepar Mickael Canouil » 27 Nov 2018, 09:24

Bonjour,

c'est possible moyennant la bonne transformation du second axe en fonction du premier s'il y a lieu.

Un exemple simple de la documentation de ggplot2 (https://ggplot2.tidyverse.org/reference/sec_axis.html):

Code : Tout sélectionner

p <- ggplot(mtcars, aes(cyl, mpg)) +
  geom_point()
p + scale_y_continuous(sec.axis = sec_axis(~.+10))


Un autre exemple plus compliqué

Code : Tout sélectionner

library(tidyverse)
library(scales)
dta <- airquality %>%
  dplyr::group_by(Month) %>%
  dplyr::summarise(
    first_y = mean(Temp, na.rm = TRUE),
    second_y = mean(Wind, na.rm = TRUE)
  )

factor_norm <- max(dta[["second_y"]]) / max(dta[["first_y"]])
second_y_breaks <- scales::pretty_breaks(n = 2)(dta[["second_y"]])

ggplot2::ggplot(data = dta) +
  theme_light() +
  ggplot2::geom_hline(
    data = data.frame(y = second_y_breaks),
    mapping = ggplot2::aes(yintercept = y / factor_norm),
    linetype = 2,
    size = 0.25,
    colour = "grey87"
  ) +
  ggplot2::geom_bar(mapping = ggplot2::aes(x = Month, y = first_y), fill = "dodgerblue", alpha = 0.5, stat = "identity") +
  ggplot2::geom_point(mapping = ggplot2::aes(x = Month, y = second_y / factor_norm), colour = "firebrick2") +
  ggplot2::scale_y_continuous(
    sec.axis = ggplot2::sec_axis(
      trans = ~. * factor_norm,
      name = "second_y",
      breaks = second_y_breaks
    )
  )

Image

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Patricia OBEID
Messages : 68
Enregistré le : 10 Avr 2017, 19:03

Re: ggplot2 : graphiques avec 2 axes Y est-ce possible ?

Messagepar Patricia OBEID » 28 Nov 2018, 10:50

Merci Mickael, je vais étudier tout ça.
Patricia


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité