叠加两个具有不同 x 和 y 轴刻度的 ggplot

aaa*_*aaa 2 plot overlay r axes ggplot2

假设我有两个 data.frames,如下所示:

df_1=data.frame(x=c(1:200), y=rnorm(200))

df_2=rpois(100000, 1)
df_2=data.frame(table(df_2))
df_2$df_2=as.numeric(levels(df_2$df_2))[df_2$df_2]
Run Code Online (Sandbox Code Playgroud)

当我单独绘制它们时,我得到:

library(ggplot2)
p1=ggplot() +
  geom_line(data=df_1, aes(x=x,y=y))

print(p1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

p2=ggplot() +
  geom_line(data=df_2, aes(x=df_2,y=Freq))

print(p2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这两个图具有不同的 x 轴和 y 轴。

如何将两个图叠加到一个图上?

谢谢

And*_*dS. 7

这是另一种选择。我们可以使用函数sec.axis中的参数scale_*_continuous()通过转换将数据相互映射。

ggplot() +
  geom_line(data=df_1, aes(x=x,y=y))+
  geom_line(data=df_2, aes(x=df_2*25,y=Freq/9000))+
  scale_x_continuous(sec.axis = sec_axis(trans = ~./25))+
  scale_y_continuous(sec.axis = sec_axis(trans = ~.*9000))
Run Code Online (Sandbox Code Playgroud)

重新缩放是任意的,因此您可以随意使用它,直到您满意为止。

  • 我不同意。通过乘法转换数据不会改变分布的形状。 (2认同)