ggplot2防止月份在y轴上重复

时间:2019-01-13 16:23:25

标签: r date ggplot2

我绘制了一个时间序列,用该时间序列我将事件发生的平均天数作为多年来的时间。我试图用Y轴上的月份,x轴上的年份来绘制此图。但是每年重复几个月。例如,我有两个事件分别发生在2006年和2007年1月。我不需要在y轴上有两个单独的一月事件。附件是我得到的图像,您可以在y轴上看到重复的月份。我不确定如何解决此问题。下表是我的数据表(test1),后面是我要绘制的代码,只有三行:

 Zone Year       Mean      PosSD      NegSD
1 zone4 2006 2006-07-19 2007-01-13 2006-01-23
2 zone4 2007 2007-05-29 2007-11-04 2006-12-22
3 zone4 2008 2008-01-12 2008-01-15 2008-01-09


  FI_plot<- ggplot(test1, aes(x=Year, y = Mean))+
    geom_point()+ 
    scale_y_date(date_labels = "%b, %d", date_breaks = "1 month")

Image of output plot

1 个答案:

答案 0 :(得分:0)

之所以会这样,是因为“均值”列是每一行的年份发生变化的日期。 如果您只想绘制“天”,最简单的解决方案是分配所有 排到同一年(与哪一年无关)。这样的事情会起作用:

library(ggplot2)
dd <- data.frame(stringsAsFactors=FALSE,
        Zone = c("zone4", "zone4", "zone4"),
        Year = c(2006, 2007, 2008),
        Mean = as.Date(c("2006-07-19", "2007-05-29", "2008-01-12")),
       PosSD = as.Date(c("2007-01-13", "2007-11-04", "2008-01-15")),
       NegSD = as.Date(c("2006-01-23", "2006-12-22", "2008-01-09")))

# replace current year with 1900 
dd$Mean  <- as.Date(gsub("[0-9]{4}-", "1900-", dd$Mean))
dd$PosSD <- as.Date(gsub("[0-9]{4}-", "1900-", dd$PosSD))
dd$NegSD <- as.Date(gsub("[0-9]{4}-", "1900-", dd$NegSD))
dd
#>    Zone Year       Mean      PosSD      NegSD
#> 1 zone4 2006 1900-07-19 1900-01-13 1900-01-23
#> 2 zone4 2007 1900-05-29 1900-11-04 1900-12-22
#> 3 zone4 2008 1900-01-12 1900-01-15 1900-01-09

# plot
FI_plot<- ggplot(dd, aes(x=Year, y = Mean))+
          geom_point() + 
          scale_y_date(date_labels = "%b, %d", date_breaks = "1 month")

FI_plot

reprex package(v0.2.1)于2019-01-13创建