Michal, I think (and hope for you) it is not necessary to search the solution at the level of grid. The plot function for variograms in package gstat is a rather (?) thin wrapper around xyplot, so if you carefully read how to control the main and sub arguments of ?xyplot, then you're done:
library(gstat) data(meuse) coordinates(meuse)=~x+y v = variogram(log(zinc)~1,meuse) v.pl = plot(v, main="log-zinc",sub=list(label = "xx", cex=.5)) Next you can print the v.pl etc. objects side by side using print(v.pl, more = TRUE) etc. -- Edzer Michal Gallay wrote: > Dear R Users, > > I'd like to ask you for help. I am R beginner, tackling R for about three > months. I'd like to produce variograms with 0, 1st, 2nd order detrending > for 30 ascii grid files containing elevation data. > > I've got problem with a simple thing but as it seems to me not as easy one > as I thought. I hope I just can't see because of my eyes. > > I'd like to plot three gstat variograms in one row on one page, to give > them a main title (just single one for all three of the plots), and for > each of the plots a subtitle, controlling the fontsize. > > At first I used following approach: > > #Calculation of the variogram and store it in a variable var... > g <- gstat(id = "xyz.values", > formula=z~1, > locations = ~x+y, > data = xyz.values, > set = list(fraction = 0.33, width = 2)) > var.0ot <- variogram(g) > > g <- gstat(id = "xyz.values", > formula=z~x+y, > locations = ~x+y, > data = xyz.values, > set = list(fraction = 0.33, width = 2)) > var.1ot <- variogram(g) > > g <- gstat(id = "xyz.values", > formula= z~x + y + I(x*y) + I(x^2) + I(y^2), > locations = ~x+y, > data = xyz.values, > set = list(fraction = 0.33, width = 2)) > var.2ot <- variogram(g) > > #Store the plot it in a variable plot.var... > > plot.var.0ot <- plot(var.0ot, pch=3, cex=0.5, col="red", > main="No trend removed") > plot.var.1ot <- plot(var.1ot, pch=3, cex=0.5, col="red", > main="1st order trend removed") > plot.var.2ot <- plot(var.2ot, pch=3, cex=0.5, col="red", > main="2st order trend removed") > > #Print the variograms into regions as specified > > print(plot.var.0ot, split=c(1,1,3,1), more=T) > print(plot.var.1ot, split=c(2,1,3,1), more=T) > print(plot.var.2ot, split=c(3,1,3,1), more=F) > > The variograms were plotted OK, however, via that approach I couldn't > figure out how to change the font size of the subtitles of each graph > (specified by main="No trend" etc.)'par'or 'title' didn't work or I didn't > use them right way. Further, I wasn't able to plot the main title > positioned above the three subtitles and graphs. > > So I thought the problem will be sorted if I use 'grid' package as > plot.gstat Variogram function obeys 'lattice'. > > I've created a viewport of 3 by 3 grid layout (after Paul Murrell > http://www.stat.auckland.ac.nz/~paul/grid/grid.html#docs) and viewport > tree. First row accommodates main title. This works fine. The second row > and first column includes just the subtitle 1, second column subtitle 2, > third column subtitle 3. > > Third row is dedicated to the variogram plots. However, they are not > plotted into the viewports plot1, plot2, plot3, but on the whole page. > > The approach was as follows: > > top.vp <- viewport(layout = grid.layout(3,3,widths=unit(c(1,1,1), c("null", > "null", "null")), heights=unit(c(1,1,1), c("lines", "lines", "null")))) > > vp.main.title <- viewport(layout.pos.col=c(1:3),layout.pos.row=1, > name="vp.main.title") vp.subtitle1 <- > viewport(layout.pos.col=1,layout.pos.row=2, name="vp.subtitle1") > vp.subtitle2 <- viewport(layout.pos.col=2,layout.pos.row=2, > name="vp.subtitle2") vp.subtitle3 <- > viewport(layout.pos.col=3,layout.pos.row=2, name="vp.subtitle3") vp.plot1 > <- viewport(layout.pos.col=1,layout.pos.row=3, name="vp.plot1") vp.plot2 <- > viewport(layout.pos.col=2,layout.pos.row=3, name="vp.plot2") vp.plot3 <- > viewport(layout.pos.col=3,layout.pos.row=3, name="vp.plot3") > > splot <- vpTree(top.vp, vpList(vp.main.title, vp.subtitle1, vp.subtitle2, > vp.subtitle3,vp.plot1, vp.plot2, vp.plot3)) > > pushViewport(splot) > > seekViewport("vp.main.title") > grid.text("main title", gp=gpar(cex=1.2)) > seekViewport("vp.subtitle1") > grid.text("subtitle 1", gp=gpar(cex=0.8)) > seekViewport("vp.plot1") > plot(var.0ot, pch=3, cex=0.5, col="red") > > I much appreciate any suggestions and criticism. > Thank you very much in advance. > > Michal > > _______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo