我有从2001年到2009年的九条河流的数据。我想创建九个方面的图表,每个方面我想要每年有九条河流。 x轴将是从1月到12月。到目前为止,我已经达成了这个目标:
我使用的代码如下:
testseries<- read.csv("testseries.csv")
meltedtestseries <- melt(testseries,id=c("date"))
head(meltedtestseries)
ggplot(meltedtestseries,aes(x=date,y=value))+geom_line()+facet_wrap(~variable,scales="free")+xlab("Date")+ylab("Discharge(cms)")
我获得的图表如下:
现在,我想在几个月内更改X轴,并为每个方面绘制每年九条曲线。我知道我需要改变颜色=年或类似的东西。但它没有成功。任何帮助都非常感谢。谢谢。
可以在https://www.dropbox.com/s/ykhu8vc9211xtzu/testseries.csv
上找到数据集Jdbaba
修改:额外信息
我也试过这段代码:
ggplot(meltedtestseries,aes(x=as.Date(date),y=value,color=date))+geom_line()+facet_wrap(~variable,scales="free")+xlab("Date")+ylab("Discharge(cms)")
答案 0 :(得分:4)
我认为你所缺少的是year
的分组。假设您的data.frame
为df
,
require(ggplot2)
require(reshape2)
df1 <- read.csv("~/Downloads/testseries.csv")
df <- melt(df1,id=c("date"))
df$date <- as.Date(df$date)
# get `year` first
# df$year <- as.POSIXlt(df$date)$year + 1900 (old code)
# df$year <- format(df$date,'%Y') # following @agstudy's comment.
p <- ggplot(data = df, aes(x=date, y=value))
# group/colour by year
p <- p + geom_line(aes(colour=factor(year)))
p <- p + scale_colour_brewer(palette="Set3")
p <- p + facet_wrap(~ variable, scales="free", ncol=3)
p <- p + xlab("Date") + ylab("Discharge(cms)")
p
这给出了:
编辑2:如果这不是您要查找的内容,那么您可能需要使用facet_grid
对2个变量进行分面,如下所示:
df$year <- factor(as.POSIXlt(df$date)$year + 1900)
p <- ggplot(data = df, aes(x=date, y=value))
p <- p + geom_line()
p <- p + facet_grid(variable ~ year)
p <- p + xlab("Date") + ylab("Discharge(cms)")
p
给出一个密集的图表: