131 votes

Comment puis-je tracer avec 2 axes y différents ?

Je voudrais superposer deux nuages de points dans R afin que chaque ensemble de points ait son propre axe des y (différent) (c'est-à-dire aux positions 2 et 4 sur la figure) mais les points apparaissent superposés sur la même figure.

Est-il possible de le faire avec plot ?

Modifier un exemple de code montrant le problème

 # example code for SO question
y1 <- rnorm(10, 100, 20)
y2 <- rnorm(10, 1, 1)
x <- 1:10
# in this plot y2 is plotted on what is clearly an inappropriate scale
plot(y1 ~ x, ylim = c(-1, 150))
points(y2 ~ x, pch = 2)

5voto

Chase Points 27342

Une option consiste à créer deux parcelles côte à côte. ggplot2 fournit une option intéressante pour cela avec facet_wrap() :

 dat <- data.frame(x = c(rnorm(100), rnorm(100, 10, 2))
  , y = c(rnorm(100), rlnorm(100, 9, 2))
  , index = rep(1:2, each = 100)
  )

require(ggplot2)
ggplot(dat, aes(x,y)) + 
geom_point() + 
facet_wrap(~ index, scales = "free_y")

4voto

Dirk Eddelbuettel Points 134700

C'est une FAQ. Voici une solution plus ancienne que j'ai fournie presque il y a six ans à la R Graph Gallery

Vous pouvez par exemple regarder la fonction plotVolumeBars() qui combine une échelle absolue et relative dans un même graphique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X