【发布时间】:2016-01-20 16:35:09
【问题描述】:
我已经解决这个问题 2 天了。
我正在尝试将 6 个绘图打印到一个页面并循环打印到一个文件...
对于如何循环,我还很陌生……我尝试了多种安排,但每次我都离得很近,但并不完全在那里。我正在按参数(DO、PH、NH4 等....)和 6 个时间段(6 月至 7 月)生成图。所以每个参数的一页有 6 个图(总共 26 个)。我可以成功地将 6 个图向上翻页并手动保存到文件中……但这需要大量手动保存,我即将处理一个类似但更大的项目。
到目前为止,我已经获得了成功将每个单独的图打印到文件的代码,但没有将 6 个图打印到文件的页面。我得到的最好的结果是它创建了一个文件,然后循环遍历并覆盖每一页,这样我就有了一个标有 Chla 的页面,其中绘制了 6 个时间段的水温。
这是我的代码......我觉得我非常接近解决方案,我可以品尝它。
alls<-subset( all,all$Layer=="S ")
x <- levels( alls$Parameter)
a <- levels( alls$period)
for( h in 1:length(x)){
png( paste( x[h], "_plot", ".jpeg", sep = ""), width = 1000, height = 800)
par( mfrow=c( 2,3),mar=c( 1.5,.5,.5,1),oma=c( 1,1,1,1),mgp=c( 1.5, .5, 0),cex = 1.3)
for( i in 1:length( x ) ){
y <- alls[ alls$Parameter == x[ i ],]
for( j in 1:length( a ) ){
b <- y[ y$period == a[ j ],]
plot( b$mean~b$YEAR,main = paste( x[ i ], "_RET_",a[ j ],"_Surface" ),cex.main=.6,subset=b$Station=="RET1.1",pch='.', xlab="",ylab="",xlim=c( 1985,2015),ylim=c( min( b$mean ),max( b$mean ) ),cex.axis=.6)
lines( b$mean~b$YEAR,subset= b$Station=="RET1.1",col="black")
lines( b$mean~b$YEAR,subset= b$Station=="RET2.1",col="blue")
lines( b$mean~b$YEAR,subset= b$Station=="RET1.1",col="red")
lines( b$mean~b$YEAR,subset= b$Station=="RET2.1",col="red")
lines( b$mean~b$YEAR,subset= b$Station=="RET2.2",col="green")
lines( b$mean~b$YEAR,subset= b$Station=="RET2.4",col="orange")
lines( b$mean~b$YEAR,subset= b$Station=="RET3.1",col="purple")
lines( b$mean~b$YEAR,subset= b$Station=="RET3.2",col="pink")
lines( b$mean~b$YEAR,subset= b$Station=="RET4.1",col="dark green")
lines( b$mean~b$YEAR,subset= b$Station=="RET4.2",col="light blue")
lines( b$mean~b$YEAR,subset= b$Station=="RET4.3",col="dark blue")
lines( b$mean~b$YEAR,subset= b$Station=="RET5.1A",col="violet")
lines( b$mean~b$YEAR,subset= b$Station=="RET5.2",col="gray")
}
}
dev.off()
}
这是所有人的头和尾。
YEAR Layer Station mean period Parameter
121 1986 S RET1.1 7.700000 Apr_May DO
122 1987 S RET1.1 7.700000 Apr_May DO
123 1988 S RET1.1 8.375000 Apr_May DO
124 1989 S RET1.1 8.275000 Apr_May DO
125 1990 S RET1.1 8.425000 Apr_May DO
126 1991 S RET1.1 7.125000 Apr_May DO
127 1992 S RET1.1 9.350000 Apr_May DO
128 1993 S RET1.1 8.225000 Apr_May DO
129 1994 S RET1.1 8.150000 Apr_May DO
130 1995 S RET1.1 8.233333 Apr_May DO
131 1996 S RET1.1 9.500000 Apr_May DO
132 1997 S RET1.1 9.050000 Apr_May DO
133 1998 S RET1.1 7.575000 Apr_May DO
134 1999 S RET1.1 8.675000 Apr_May DO
135 2000 S RET1.1 8.150000 Apr_May DO
136 2001 S RET1.1 7.625000 Apr_May DO
137 2002 S RET1.1 7.725000 Apr_May DO
138 2003 S RET1.1 7.600000 Apr_May DO
139 2004 S RET1.1 8.500000 Apr_May DO
140 2005 S RET1.1 8.425000 Apr_May DO
114235 2006 S RET5.1A 26.48333 all TURB_NTU
114236 2007 S RET5.1A 16.00833 all TURB_NTU
114237 2008 S RET5.1A 20.16923 all TURB_NTU
114238 2009 S RET5.1A 21.37250 all TURB_NTU
114239 2015 S RET5.1A 16.23333 all TURB_NTU
114255 1993 S RET5.2 53.81875 all TURB_NTU
114256 1994 S RET5.2 27.14000 all TURB_NTU
114257 1995 S RET5.2 40.60333 all TURB_NTU
114258 1996 S RET5.2 47.48333 all TURB_NTU
114259 1999 S RET5.2 23.46250 all TURB_NTU
114260 2000 S RET5.2 24.94545 all TURB_NTU
114261 2001 S RET5.2 27.58333 all TURB_NTU
114262 2002 S RET5.2 23.07500 all TURB_NTU
114263 2003 S RET5.2 41.76667 all TURB_NTU
114264 2004 S RET5.2 25.63636 all TURB_NTU
114265 2005 S RET5.2 35.23846 all TURB_NTU
114266 2006 S RET5.2 36.36364 all TURB_NTU
114267 2007 S RET5.2 25.62500 all TURB_NTU
114268 2008 S RET5.2 25.12500 all TURB_NTU
114269 2009 S RET5.2 27.37000 all TURB_NTU
我查找了 dput.... 我这样做对吗?
dput(head(alls,20))
structure(list(YEAR = 1986:2005, Layer = structure(c(6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L), .Label = c("AP", "B ", "BP", "BS", "M ", "S ", "VH"), class = "factor"),
Station = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("RET1.1",
"RET2.1", "RET2.2", "RET2.4", "RET3.1", "RET3.2", "RET4.1",
"RET4.2", "RET4.3", "RET5.1A", "RET5.2"), class = "factor"),
mean = c(7.7, 7.7, 8.375, 8.275, 8.425, 7.125, 9.35, 8.225,
8.15, 8.233333333, 9.5, 9.05, 7.575, 8.675, 8.15, 7.625,
7.725, 7.6, 8.5, 8.425), period = structure(c(2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L), .Label = c("all", "Apr_May", "Aug_Sep", "feb_mar",
"Jun_Jul", "Oct_Nov"), class = "factor"), Parameter = structure(c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L), .Label = c("CHLA", "DIN", "DO", "DON", "DOP",
"NH4F", "NO23F", "NO2F", "NO3F", "PC", "PH", "PIP", "PN",
"PO4F", "PP", "SALINITY", "SIF", "SPCOND", "TDN", "TDP",
"TN", "TON", "TP", "TSS", "TURB_NTU", "WTEMP"), class = "factor")), .Names = c("YEAR",
"Layer", "Station", "mean", "period", "Parameter"), row.names = 121:140, class = "data.frame")
【问题讨论】:
-
你能不能
dput(alls),或者其中的一部分,以便我们重现你的错误。说到错误,你遇到了什么错误? -
实际上没有得到任何错误。
-
头部和尾部可以用
dput()包起来吗,它会生成结构,方便我们使用数据。您想要 1 页上的 6 个图还是 6 页和 1 个图? (如果后者看到?pdf,则需要将 jpeg 包装在 pdf 中。) -
好的...刚刚尝试了 dput 的事情...我做对了吗?我试图在一页上获得 6 个图,并在循环中为每个参数打印到一个文件中。到目前为止,我可以做任何一个或但不能两者兼而有之。我会弄乱pdf更多
-
您的
dput是正确的,它没有提供足够的信息来复制您的问题。