r - 将第二个 x 轴添加到 ggplot

r - Add a 2nd x axis to a ggplot

我 运行 对某些人群的模拟。现在我想将这些人口的特定特征随时间的变化绘制为线图。公共x轴显示代数

下面是我的 R 代码目前的最小工作示例(虚拟数据):

require(ggplot2)

set.seed(3)
x <- 99:0
y <- 0.5+cumsum(rnorm(100, 0, 0.01))
xy <- data.frame(x,y)

ggplot(data=xy, aes(x=x, y=y)) +
   geom_line() +
   xlab("Generation number") +
   ylab("Character")

但是,现在我想添加第二个 x 轴,它给出现在之前的年数 (BP),假设平均世代时间为 22.5 年。因此,最低世代编号的值将在第 2 轴中具有最高值,反之亦然。知道我该如何实现吗?

非常感谢您的建议和帮助!

如果您只想添加第二个 x 轴,请在 scale_x_continuous 中使用 sec.axis ...您还可以在那里添加一些计算 ...

ggplot(data=xy, aes(x=x, y=y)) +
    geom_line() +
    scale_x_continuous(sec.axis=(~.+5)) +
    xlab("Generation number") +
    ylab("Character")

好的,感谢@sambold。这是我基于 her/his 建议的解决方案:

ggplot(data=xy, aes(x=x, y=y)) +
    geom_line() +
    scale_x_continuous(sec.axis=(~.*-22.5+2250)) +
    xlab("Generation number") +
    ylab("Character")