Я нашел несколько тем, содержащих sec.axis
в scale_y_continuous
. Я видел много формул для преобразования второй шкалы. Но мне не нужны trans=~./50
или trans=~.+50
. Я бы предпочел установить диапазон мануэля. Я не вижу причины, по которой мне следует связывать вторую шкалу по формуле с первой. Это не зависит от этого.
# data generation
x = seq(1:20)
y1 = runif(20, 5, 50000)
y2 = rnorm(20)
df1 = data.frame(x, y1)
df2 = data.frame(x, y2)
ggplot(data=df1, aes(x, y=y1, col="red")) +
geom_line() +
geom_point(data=df2, aes(x, y=y2, col="blue")) +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(breaks = scales::pretty_breaks(n = 10), sec.axis = sec_axis(trans=~., name="y2")) +
theme(legend.position="none")
Когда я запускаю одноточечную команду, она дает «естественную» шкалу.
ggplot() +
geom_point(data=df2, aes(x, y=y2))
Как я могу получить нормальную шкалу y из второго изображения в качестве второй шкалы y с правой стороны первого графика?
Insight:Невозможно не связать две оси Y.
ggplot(data=df1, aes(x, y=y1, col="red")) +
geom_line() +
geom_point(data=df2, aes(x, y=y2, col="blue")) +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(breaks = scales::pretty_breaks(n = 10), sec.axis = sec_axis(trans=~./50000, name="y2")) +
theme(legend.position="none")
Тем не менее: Почему точки данных не совпадают влиния с преобразованной второй осью Y?