我绘制了一个时间序列,用该时间序列我将事件发生的平均天数作为多年来的时间。我试图用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")
答案 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创建