你好,
我已经为这个问题苦苦挣扎了一段时间了,任何可以帮助我的人都会非常感激。
首先,我正在包含多个时间序列的单个数据帧中处理时间序列数据。太多,无法单独输出到图形中。我试过通过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函数安排多个绘图(它也具有非常有用的nrowncol参数来设置参数)。然后,您可以使用ggsave中的ggplot2保存它。

我会让您进行其他可能需要的调整。

07-24 09:48
查看更多