【问题标题】:Plotting multiple time series plots using median data in R使用 R 中的中值数据绘制多个时间序列图
【发布时间】:2017-06-09 11:57:34
【问题描述】:

我刚开始学习 R,所以这可能是多余的,所以我很抱歉。我想在 R 中制作这个附加的 excel 图表。我的数据包括 1951 年至 2016 年水库的每日水位读数。我需要将数据分为三个系列(1951 年至 2013 年、2014 年至 2015 年和 2016 年)。我想绘制每个日历日这些系列的中值。我想从中值中删除 2 月 29 日。这是我的数据的链接:https://docs.google.com/spreadsheets/d/1u1Whfp6VHXkZgrC0sVn_mT9XiVxszMhqlAszjZXzM1E/edit?usp=sharing

这是我目前所拥有的:

LL <- read.csv("BSLL.csv")
str(LL)
LLpre <- filter(LL, year > "1952" & year <"2014") 
headtail(LLpre, n=3)
medianLLpre = ddply(LLpre, .(month, day), summarise, level = median(level),   na.rm = FALSE)
LLpost <- filter(LL, year > "2013" & year < "2016")
headtail(LLpost, n=3)
medianLLpost = ddply(LLpost, .(month, day), summarise, level = median(level), na.rm = FALSE)
LL2016 <- filter(LL, year == "2016")
headtail(LL2016, n=3)
medianLL2016 = ddply(LL2016, .(month, day), summarise, level = median(level), na.rm = FALSE)    

Excel Plot

【问题讨论】:

    标签: r plot timeserieschart


    【解决方案1】:
    library(data.table)
    Data <- fread("BSLL - BSLL.csv")
    

    创建临时时间间隔类别 1=1951 到 2013、2=2014 到 2015 和 3=2016

    Data[,Categories:=ifelse(as.numeric(year)<2014,1,
                             ifelse(as.numeric(year)<2016,2,3))]
    

    创建没有 2 月 29 日的临时数据

    Temp.Data <- Data[!month==2][!day==29]
    

    按类别计算中位数并绘图。

    Medians <- Temp.Data[,median(as.numeric(level)),by=.(month,Categories)]
    plot(x=Medians[,month], y=Medians[,V1],type="n", xlab="", ylab="", 
         xaxt="n", yaxt="n", bty="l")
    axis(2, tick=TRUE, labels=FALSE)
    axis(2, tick=FALSE, labels=TRUE, line=-0.5)
    axis(1, tick=TRUE, labels=FALSE)
    axis(1, tick=FALSE, labels=TRUE, line=-0.5)
    lines(x=Medians[Categories==1][,month],
          y=Medians[Categories==1][,V1],type="l",lwd=1,col="red")
    lines(x=Medians[Categories==2][,month],
          y=Medians[Categories==2][,V1],type="l",lwd=1,col="green")
    lines(x=Medians[Categories==3][,month],
          y=Medians[Categories==3][,V1],type="l",lwd=1,col="blue")
    legend('topright','groups',
           legend=c("1951 to 2013","2014 to 2015","2016"), bty="n",lty=c(1,1),
           col=c("red","green","blue"))
    

    这是怎么回事?您可以自己修改情节的细节(大小、位置、颜色、标签等)

    P.S 将来公开发布您的完整数据集并不是一个好主意。这里的贡献者只需要一个数据示例即可使用和测试

    【讨论】:

    • 感谢您对共享数据的建议。
    • 您是否尝试过我回答中的脚本?他们给了你你需要的东西吗?如果是这样,请单击复选标记,以便此问题被视为已关闭。
    • 我希望在一个日历年内开发折线图而不是条形图。我附上了一个 excel 图,以便更好地解释我正在尝试做的事情。
    • 啊,好吧,所以你想要按所示分类的年份的月中位数。没问题,我过会再回复你
    • 根据要求调整脚本。如果这是您需要的,请单击答案旁边的复选标记,以便此问题被视为已关闭
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2020-03-30
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多