R ggplot2在一个图中绘制多个时间序列的图表

7

在你的帮助下,我已经成功地将单个(一个变量)图中的气象变量绘制出来,现在我正在尝试在一个面板中生成数据中不同变量的时间序列,就像ggplot2网页示例中的那样。我尝试复制该示例(页面底部的最后一个图表),但没有成功。

我的数据跨越数年,但我只附加了一个月的数据。您可以在http://ubuntuone.com/42j1RqUmNmxUuCppW4gElX上查看datos的输出。

这是我正在尝试的代码:

datos=read.csv("paterna.dat",sep=";",header=T,na.strings="-99.9")
dm=melt(datos,id="FECHA.H_SOLAR")

datos$PRECIP[is.na(datos$PRECIP)]=0
dm=melt(datos,id="FECHA.H_SOLAR")
qplot(date, value, data = dm, geom = "line", group = variable) +  facet_grid(variable ~ ., scale = "free_y") 
Error: geom_line requires the following missing aesthetics: x
Además: Mensajes de aviso perdidos
1: In min(x) : ningún argumento finito para min; retornando Inf
2: In max(x) : ningun argumento finito para max; retornando -Inf

我尝试使用在引用示例中出现的qplot,但也许更好的方法是使用ggplot并设置美学效果。然后我还可以自定义坐标轴。
提前感谢。

从错误看来,你的“value”列可能有“NA”,这会导致qplot在尝试计算x轴范围时挂起。 - Chris
@Chris 当我之前使用ggplot在单个图表中绘制单个变量时,只需要在使用geom_bar()绘制降水时删除NAs(更改为0),而在使用geom_line时则不需要。也许在执行melt命令后需要删除NA?我之前使用了melt,因为它在引用的示例中被使用。 - pacomet
1个回答

8
问题有两个。首先,在融合的数据框中没有date对象,这会导致错误信息。其次,你的FECHA.H_SOLAR是一个因子,这会使得绘制日期正确性困难。所以,这是我的解决方案:
datos <- source("http://ubuntuone.com/42j1RqUmNmxUuCppW4gElX")[[1]]
library(reshape2)
library(ggplot2)

datos$PRECIP[is.na(datos$PRECIP)] <- 0
dm <- melt(datos,id="FECHA.H_SOLAR")
# change FECHA.H_SOLAR to POSIXct so you get your dates right
dm$Fecha <- as.POSIXct(dm$FECHA.H_SOLAR, "%y/%m/%d %H:%M:%S", tz = "")
qplot(Fecha, value, data = dm, geom = "line", group = variable) +
  facet_grid(variable ~ ., scale = "free_y")

在此输入图片描述

希望对您有所帮助


哇,太棒了。它完美地运行了。现在我要尝试从qplot转到gplot并自定义图表。再次感谢。 - pacomet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接