[R-sig-Geo] Several gstat variograms on a single page

Michal Gallay mgallay01 at Queens-Belfast.AC.UK
Fri May 4 00:05:49 CEST 2007


Thank you Edzer,

you're right, the layout I wanted to get can be produced just using simple 
'graphics' functions. I've already 'discovered' how to do it.

At this stage, I find Lattice and Grid graphics too complex. The biggest 
problem is to understand how particular features of a lattice/grid plot are 
controlled. However, step by step, I am getting there.

Best wishes,

Michal

On May 3 2007, Edzer J. Pebesma wrote:

> 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 at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> 

-- 
Michal Gallay

Postgraduate Research Student
School of Geography, Archaeology and Palaeoecology
Queen's University
Belfast BT7 1NN
Northern Ireland

Tel: +44(0)2890 273929
Fax: +44(0)2890 973212
email: mgallay01 at qub.ac.uk
www: www.qub.ac.uk/geog




More information about the R-sig-Geo mailing list