sec_axis
требует преобразования (формула), а не поиска.Чтобы увидеть, что происходит, я изменю это следующим образом:
sec_axis_label <- function(z) { browser() ; 1 ; }
df %>%
ggplot(aes(decile, y)) +
scale_x_continuous(expand = c(0, 0),
sec.axis = sec_axis(~ sec_axis_label(.))) +
geom_point()
Мы можем исследовать и посмотреть, что происходит:
# Browse[2]>
str(z)
# num [1:1000] 1 1.01 1.02 1.03 1.04 ...
# Browse[2]>
range(z)
# [1] 1 10
# Browse[2]>
Q
Это дает вам достаточно потенциальных значений, так чтопреобразование вернет значимый диапазон значений других осей, чтобы определить наилучшие симпатичные числа.
Итак, нам нужно преобразование сортов.Если мы предполагаем, что интерполяция безопасна (я не знаю, безопасна ли она для вас), мы можем сделать:
sec_axis_label <- function(a) approx(df$decile, df$x, xout=a)$y
df %>%
ggplot(aes(decile, y)) +
scale_x_continuous(expand = c(0, 0),
sec.axis = sec_axis(~ sec_axis_label(.))) +
geom_point()