我一直在努力解决这个问题,而且任何可以帮助我的人都会非常感激。
首先,我正在使用包含多个时间序列的单个数据框中的时间序列数据。太多,无法单独输出到图表中。我试过通过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个位置(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
编辑 -
正如阿伦所指出的那样,我正在努力保存250个不同图形的.pdf,这些图形由我的“好点”分割为“Loc”,点和线几何图形用于数据审查....我也尝试通过qplot传递我的df的ddply作为数据,但它也没有用,我不是真的期待它,但我不得不尝试。
答案 0 :(得分:2)
这个怎么样?
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
保存它。
我会留下您可能需要的任何其他调整。