我正在尝试创建一个温度图,但我无法按年汇总数据。 我的数据以这种形式出现:
02-2012 7.2
02-2013 7.2
02-2010 7.9
02-2011 9.8
03-2013 10.7
03-2010 13.1
03-2012 18.5
03-2011 13.7
02-2003 9.2
...
包含2000年1月到2013年12月之间的所有月份。我已经在动物园中加载了数据:
f <- function(x) as.yearmon(format(x), "%m-%Y")
temp <- read.zoo(file="results.tsv", FUN = f)
绘制临时变量我从2000年1月到2013年12月获得了X轴的图,但我想要的是X轴从1月到12月的绘图,并绘制每年的温度作为一个单独的行。任何提示?
谢谢, 安德烈
答案 0 :(得分:1)
首先,您要将日期分为年度和月份组成部分:
names(temp) <- c("date","temperature")
tmpSplit <- strsplit(temp$date, "-")
temp$month <- sapply(tmpSplit, "[", 1)
temp$year <- sapply(tmpSplit, "[", 2)
然后,我倾向于使用ggplot2包来绘制数据:
library(ggplot2)
ggplot(temp, aes(x=month, y=temperature, group=year)) + geom_line()
答案 1 :(得分:0)
以下是几种方法。首先设置数据。请注意read.zoo
。
library(zoo)
temp <- read.zoo("results.tsv", FUN = as.yearmon, format = "%m-%Y")
除了下面的图表,R(stats包)的基础中还有monthplot
。如果as.ts(temp)
是问题中提供的数据子集,但它似乎不适用于temp
,但如果实际数据看起来更像?monthplot
示例中的数据,那么它就可以正常工作。
1)ggplot2
使用月,年和值的列创建data.frame DF
。 cycle
可以获得月份数字和格式为%Y
的格式可以给出年份。
请注意,我们希望年份是数据框使它们成为格式为字符的结果的因素。最后使用ggplot2或lattice:
library(ggplot2)
DF <- data.frame(Month = coredata(cycle(temp)),
Year = format(index(temp), "%Y"),
Value = coredata(temp))
ggplot(DF, aes(Month, Value, col = Year)) +
geom_line() +
scale_x_continuous(breaks = 1:12)
2)格子使用2)中的DF这将起作用:
library(lattice)
xyplot(Value ~ Month, DF, group = Year, type = "l", auto = TRUE)
已修订已添加解决方案和其他评论。