Для этого может быть несколько решений. Это мое усилие, изменившее только одну строку в вашем коде: cumulative = cumsum(abs(5-x)/sum(abs(5-x)))/2.5) %>%
library(tidyverse)
tibble(x = sort(rnorm(1e5)),
cumulative = cumsum(abs(5-x)/sum(abs(5-x)))/2.5) %>%
ggplot(aes(x)) +
geom_histogram(aes(y = ..density..), bins = 500)+
geom_density(color = "red")+
geom_line(aes(y = cumulative), color = "navy")+
scale_y_continuous(sec.axis = sec_axis(~.*2.5, name = "cumulative density"))
О том, почему используйте 2.5, я изо всех сил пытаюсь решить это каждый раз, когда используювторая ось у. Во-первых, давайте посмотрим, как будет выглядеть этот график без 2,5 в cumulative = cumsum(abs(5-x)/sum(abs(5-x)))) %>%
и scale_y_continuous(sec.axis = sec_axis(~., name = "cumulative density"))
library(tidyverse)
tibble(x = sort(rnorm(1e5)),
cumulative = cumsum(abs(5-x)/sum(abs(5-x)))) %>%
ggplot(aes(x)) +
geom_histogram(aes(y = ..density..), bins = 500)+
geom_density(color = "red")+
geom_line(aes(y = cumulative), color = "navy")+
scale_y_continuous(sec.axis = sec_axis(~., name = "cumulative density"))
. Вы получите следующий график 
Чтобы уменьшить вторую ось y, мы масштабируем вторую y: cumulative = cumsum(abs(5-x)/sum(abs(5-x)))/2.5)
.
library(tidyverse)
tibble(x = sort(rnorm(1e5)),
cumulative = cumsum(abs(5-x)/sum(abs(5-x)))/2.5) %>%
ggplot(aes(x)) +
geom_histogram(aes(y = ..density..), bins = 500)+
geom_density(color = "red")+
geom_line(aes(y = cumulative), color = "navy")+
scale_y_continuous(sec.axis = sec_axis(~., name = "cumulative density"))
Мы получаем следующий график:

1 / 2.5 = 0,4. Максимальные значения для обеих осей теперь аналогичны,
Я думаю, ggplot
использует эти измененные значения для создания графика, а затем мы помечаем их, умножая эти значения на 2,5 в scale_y_continuous(sec.axis = sec_axis(~.*2.5, name = "cumulative density"))
.
Извините за длинный ответ. Я не уверен, дал ли я это понять. Другие могут объяснить это лучше.