我在一个时间序列中有大约20年的每日数据。它有列日期,降雨量和其他数据。 我正在尝试将雨量与时间相比。我希望获得20个不同颜色的线条图,并生成图例,在一个图表中显示年份。我尝试了以下代码,但它没有给我想要的结果。任何解决我的问题的建议都会受到欢迎
library(ggplot2)
library(seas)
data(mscdata)
p<-ggplot(data=mscdata,aes(x=date,y=precip,group=year,color=year))
p+geom_line()+scale_x_date(labels=date_format("%m"),breaks=date_breaks("1 months"))
答案 0 :(得分:0)
它看起来不太好,但这是一种方法。我们首先将数据强制转换为同年的日期:
mscdata$dayofyear <- as.Date(format(mscdata$date, "%j"), format = "%j")
然后我们绘制:
library(ggplot2)
library(scales)
p <- ggplot(data = mscdata, aes(x = dayofyear, y = precip, group = year, color = year))
p + geom_line() +
scale_x_date(labels = date_format("%m"), breaks = date_breaks("1 months"))
答案 1 :(得分:0)
虽然我同意@Jaap认为这可能不是描述这些数据的最佳方式,但请尝试以下方法:
mscdata$doy <- as.numeric(strftime(mscdata$date, format="%j"))
ggplot(data=mscdata,aes(x=doy,y=precip,group=year)) +
geom_line(aes(color=year))
答案 2 :(得分:0)
虽然给出的答案是对你的问题的良好答案,但我认为它不会解决你的问题。我认为您应该以不同的方式来呈现数据。 @Jaap已经建议使用facets。以这种方法为例:
#first add a month column to your dataframe
mscdata$month <- format(mscdata$date, "%m")
#then plot it using boxplot with year on the X-axis and month as facet.
p1 <- ggplot(data = mscdata, aes(x = year, y = precip, group=year))
p1 + geom_boxplot(outlier.shape = 3) + facet_wrap(~month)
这将为您提供每月图表,显示每年的降雨量。因为我使用箱形图,降雨中的峰值显示为点(“正常”降雨事件在箱内)。
另一种可能的方法是使用stat_summary
。