r — Добавить вторую ось x к ggplot

#r #ggplot2 #axis

#r #ggplot2 #ось

Вопрос:

Я запустил симуляцию для некоторых групп населения. Теперь я хочу отобразить изменение конкретных характеристик этой совокупности с течением времени в виде линейного графика. Общая ось 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-й оси и наоборот. Есть идеи, как я мог бы этого достичь?

Заранее большое спасибо за ваши предложения и помощь!

Ответ №1:

Если вы просто хотите добавить вторую ось x, тогда используйте sec.axis в scale_x_continuous … вы также могли бы добавить туда некоторые вычисления…

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

Ответ №2:

Хорошо, спасибо @sambold. Вот мое решение, основанное на ее / его предложении:

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