如何在ggplot2中正确设置第二个y刻度的范围?

问题描述 投票:0回答:1

[我在sec.axis中发现了几个包含scale_y_continuous的线程。我看到了许多公式可以转换第二标度。但我不需要trans=~./50trans=~.+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")

enter image description here

当我运行单点命令时,它会给出“自然”的比例。

ggplot() +
  geom_point(data=df2, aes(x, y=y2)) 

enter image description here

如何从第二张图片中获得正常的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")

enter image description here

仍然:为什么数据点未与变换后的第二个y轴对齐?

r ggplot2 axis
1个回答
0
投票

我认为您仍然需要解决:

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")

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.