[我在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比例?
洞察力:无法将两个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轴对齐?
我认为您仍然需要解决:
ggplot(data=df1, aes(x, y=y1, col="red")) +
geom_line() +
geom_point(data=df2, aes(x, y=(2.5+y2)*8000, 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=~(./8000 - 2.5), name="y2")) +
theme(legend.position="none")