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
)
)
Cordialement,