2

我有从 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)")

我得到的图表如下: 在此处输入图像描述

现在,我想以 Months 为单位更改 X 轴,并为每个方面绘制每年的九条曲线。我知道我需要更改 color=year 或类似的东西。但它没有成功。非常感谢任何帮助。谢谢。

该数据集可在https://www.dropbox.com/s/ykhu8vc9211xtzu/testseries.csv上找到

贾巴巴

编辑:额外信息

我也试过这段代码:

ggplot(meltedtestseries,aes(x=as.Date(date),y=value,color=date))+geom_line()+facet_wrap(~variable,scales="free")+xlab("Date")+ylab("Discharge(cms)")
4

1 回答 1

4

我认为你缺少的是一个分组year。假设你data.framedf

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

这给出了:

ggplot2_facet

编辑 2:如果这不是您想要的,那么您可能需要使用 2 个变量进行分面facet_grid,如下所示:

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

给出一个密集图:

ggplot2_facet_grid_dense

于 2013-02-09T23:11:28.040 回答