将辅助 x 轴添加到 ggplot 折线图,仅供参考

Add secondary x-axis to ggplot line graph, purely for information

我有一张显示植物随时间发展的图表。作为时间,我使用生长度日(它基本上是时间和温度的组合测量)。现在我想在顶部添加第二个 x 轴,显示 'real' 时间,即实验开始后的几周,以便查看者可以更清楚地了解什么时候发生了什么。由于生长度日的性质,它们无法以任何数学方式转换为周。所以我必须单独添加信息,例如 1 周是 500 gdd,2 周是 800 gdd,3 周是 1400 gdd。此信息不会以任何方式与图表本身的内容相对应。

这是我的简单代码,用于生成度数天数的图表。

my.df<-data.frame(ccc=seq(0,15,1),gdd=seq(0,1500,100))
ggplot(data=my.df, aes(x=gdd, y=ccc))+
  geom_line()

现在我需要的是顶部 500、800 和 1400 gdd 处的轴刻度表示 1、2 和 3 以及表示 "weeks" 的轴标签。 有办法吗?到目前为止我唯一的想法是在 photoshop 中添加它,但那是作弊:)

您可以为此使用 sec_axis()。由于您基本上只想手动标记几个位置,因此您不必担心复杂的转换。

ggplot(data=my.df, aes(x=gdd, y=ccc))+
    geom_line() +
    scale_x_continuous(sec.axis = sec_axis(
        trans = ~ .,
        name = "Weeks",
        breaks = c(500, 800, 1400), 
        labels = c(1, 2, 3)))

输出: