你好,
我已经为这个问题苦苦挣扎了一段时间了,任何可以帮助我的人都会非常感激。
首先,我正在包含多个时间序列的单个数据帧中处理时间序列数据。太多,无法单独输出到图形中。我试过通过ddply()传递qplot(),但是r告诉我qplot不是函数,因此它将无法工作。
我的数据结构是这样的...
goodlocs <-
Loc Year dir
Artesia 1983 1490
Artesia 1984 1575
Artesia 1986 1567
Artesia 1987 1630
Artesia 1990 1680
Bogota 1983 1525
Bogota 1984 1610
Bogota 1985 1602
Bogota 1986 1665
Bogota 1990 1715
Carlsbad 1983 1560
Carlsbad 1985 1645
Carlsbad 1986 1637
Carlsbad 1987 1700
Carlsbad 1990 1750
Carlsbad 1992 1595
Datil 1987 1680
Datil 1990 1672
Datil 1991 1735
Datil 1992 1785
我大约有250个Locations(Locs),并且希望能够遍历下图所示的每个站点数据,以便可以直观地检查所有数据。Artesia <- goodlocs[goodlocs$Loc == "Artesia",]
qplot(YEAR, dir, data = Artesia, geom = c("point", "line"), xlab = "Year",
ylab = "DIR", main = "Artesia DIR Over Record Period") +
geom_smooth(method=lm)
我知道Par()应该可以做到这一点,但我无法终生解决。任何帮助是极大的赞赏。谢谢,
-Zia
编辑-
正如阿伦(Arun)指出的那样,我正在尝试保存一个由.loc分割的250个我的goodlocs df图形的.pdf文件,并用点和线的几何图形进行数据查看...
我还尝试通过qplot将df的ddply作为数据传递,但是它也不起作用,我并不是很期待,但是我不得不尝试。
最佳答案
这个怎么样?
require(ggplot2)
require(plyr)
require(gridExtra)
pl <- dlply(df, .(Loc), function(dat) {
ggplot(data = dat, aes(x = Year, y = dir)) + geom_line() +
geom_point() + xlab("x-label") + ylab("y-label") +
geom_smooth(method = "lm")
})
ml <- do.call(marrangeGrob, c(pl, list(nrow = 2, ncol = 2)))
ggsave("my_plots.pdf", ml, height = 7, width = 13, units = "in")
想法:首先按
Loc
拆分数据,然后为每个子集创建图。使用plyr
函数dlply
完成拆分部分,该函数基本上将data.frame
作为输入并提供list
作为输出。图元素存储在列表中与子集相对应的每个元素中。然后,我们使用gridExtra
包的marrangeGrob
函数安排多个绘图(它也具有非常有用的nrow
和ncol
参数来设置参数)。然后,您可以使用ggsave
中的ggplot2
保存它。我会让您进行其他可能需要的调整。