我有与之前相同的例子(interpolation of grouped data using data.table),但在这里我试图使用ggplot2为每个site_no创建一个.pdf图。所有图中的所有数据都打印在每个名为.pdf的site_no上,而不是打印在单个.pdf上的每个site_no的数据。你能帮忙吗?
谢谢。
Irucka
library(data.table)
library(ggplot2)
tempbigdata1 <- data.table(c(14.80, 14.81, 14.82), c(7900, 7920, 7930), c("02437100", "02437100", "02437100"))
tempbigdata2 <- data.table(c(9.98, 9.99, 10.00), c(816, 819, 821), c("02446500", "02446500", "02446500"))
tempbigdata3 <- data.table(c(75.65, 75.66, 75.67), c(23600, 23700, 23800), c("02467000", "02467000", "02467000"))
tempsbigdata <- rbind(tempbigdata1, tempbigdata2, tempbigdata3)
setnames(tempsbigdata,c("depth", "discharge", "site_no"))
setkey(tempsbigdata, site_no)
tempsbigdata
depth discharge site_no
1: 14.80 7900 02437100
2: 14.81 7920 02437100
3: 14.82 7930 02437100
4: 9.98 816 02446500
5: 9.99 819 02446500
6: 10.00 821 02446500
7: 75.65 23600 02467000
8: 75.66 23700 02467000
9: 75.67 23800 02467000
ratingsplot <- tempsbigdata[,list(discharge,depth),by=site_no]
for (u in unique(ratingsplot$site_no)) {pdf(file = file.path("/plots/", paste0(u, "_rating.pdf", sep = "")))
p <- ggplot(ratingsplot, aes(x = discharge, y = depth, group = site_no))
print(p <- p + geom_point() + theme_bw())
dev.off()
}
答案 0 :(得分:1)
您需要实际对data.table
进行子集化。 E.g:
p <- ggplot(ratingsplot[J(site_no=u)], aes(x = discharge, y = depth, group = site_no))
(另外,调用file.path
时不需要斜杠;这些是由函数添加的。)
答案 1 :(得分:1)
尝试将数据参数修改为ggplot(ratingsplot[site_no==u],...
p <- ggplot(ratingsplot[site_no==u],
aes(x = discharge, y = depth, group = site_no))
其他绘图范例有一个subset
参数,它接受在data参数的环境中解释的逻辑表达式,但我没有看到一个记录或链接到`?ggplot帮助页面。