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")
我 运行 对某些人群的模拟。现在我想将这些人口的特定特征随时间的变化绘制为线图。公共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")