在 x 轴和 y 轴“时间序列”R 上绘制日期

时间:2021-04-03 14:21:11

标签: r date ggplot2 time-series

使用下面的示例数据,我想使用 R 中的任何合适的包重现此链接底部的图(下图所示)https://nsidc.org/data/nsidc-0064

忽略样本图中的红线。

df=structure(list(year = c(2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
    2012L, 2013L, 2016L, 2017L), day = c(16L, 3L, 25L, 23L, 15L, 
    22L, 14L, 27L, 27L, 1L), day.month = c("16-May", "03-Jun", "25-May", 
    "23-Jun", "15-Apr", "22-May", "14-May", "27-May", "27-Mar", "01-May"
    )), class = "data.frame", row.names = c(NA, -10L))

感谢任何建议!

enter image description here

1 个答案:

答案 0 :(得分:0)

嗨,这很棘手,辅助 y 轴确实花了一段时间。

这段代码做了一些类似的事情,不同之处在于我无法得到我想要的图形的原点,轴标签与点在一起,而不是有规律地间隔。


library(tidyverse)

df=structure(list(year = c(2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 
    2012L, 2013L, 2016L, 2017L), day = c(16L, 3L, 25L, 23L, 15L, 
    22L, 14L, 27L, 27L, 1L), day.month = c("16-May", "03-Jun", "25-May", 
    "23-Jun", "15-Apr", "22-May", "14-May", "27-May", "27-Mar", "01-May"
    )), class = "data.frame", row.names = c(NA, -10L)) 

ggplot() + 
  geom_line(data = df, aes(x = year, y = day), 
            group = 1, colour = 'light blue') + 
  ylab("Day of year") + 
  theme(axis.line = element_line(colour = "black")) +
  geom_line(data = df, aes(x = year, y = mean(day), group = 1), colour = 'black') +
  scale_x_continuous(limits = c(2006, 2017), n.breaks = 12) +
  scale_y_continuous(limits = c(1, 27), 
                     breaks = df$day, 
                     sec.axis = dup_axis(name = "", 
                                         labels = df$day.month)) +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        panel.background = element_blank(),
        axis.line = element_line(colour = "black")) 

Graph created by my code