[Gstat-info] variogram plot with a priori variance
Paul Hiemstra
p.hiemstra at geo.uu.nl
Sun Mar 9 14:18:56 CET 2008
Hi Giovanni,
I'm happy that it works! Plotting a gstatVariogram object calls the
function plot.gstatVariogram. In turn that uses the panel function
vgm.panel.xyplot. This last panel function is normally not available to
the user, only through the gstat::: syntax. I found this by browsing
through the gstat-package source code. The variogram plot function is
documented under ?plot.gstatVariogram, for some other things you need to
go to the source code in order to find how it works.
cheers,
Paul
G. Allegri wrote:
> Thanks Paul, this works perfectly:
>
> plot(t0VARIO,VgmANIS_ZON,panel=function (x, y,...){
> gstat:::vgm.panel.xyplot(x, y,...)
> panel.abline(h=var(t0$EceZ))
> })
>
> Having previously loaded the lattice library, needed to use panel.abline().
> I suppose vgm.panel.xyplot is an overloaded method of xyplot, and that
> calling plot() with a gstat object creates a "vgm.panel.xyplot" panel
> as default. Is it right?
> Where is this "low level" code documented?
>
> Cheers,
> Giovanni
>
>
>
> 2008/3/9, Paul Hiemstra <p.hiemstra at geo.uu.nl>:
>
>> Hi Giovanni,
>>
>> You only get the line because that is what you specify in the panel
>> function. To also get the sample variogram and variogram model you need
>> to start the panel function with a call to the original panel function
>> for the variogram (gstat:::vgm.panel.xyplot, don't forget the gstat:::
>> part) and then add the extra stuff. In general:
>>
>> panel = function(x, y, ...){
>> original_panel_function(x, y, ...)
>> new_stuff
>> }
>>
>> This is an example of a custom variogram panel function I use:
>>
>> function (x, y, model, subscripts, ...)
>> {
>> gstat:::vgm.panel.xyplot(x, y, model = model, subscript = TRUE,
>> ...)
>> no_digits = function(a) {
>> if (a > 10)
>> return(0)
>> else {
>> if (a < 1)
>> return(2)
>> else return(1)
>> }
>> }
>> nugget = sum(model[1, "psill"])
>> sill = sum(model[, "psill"])
>> range = sum(model[, "range"])
>> txt = paste("Model: ", as.character(model[2, "model"]), "\nNugget: ",
>> round(nugget, digits = no_digits(nugget)), "\nSill: ",
>> round(sill, digits = no_digits(sill)), "\nRange: ", round(range,
>> digits = no_digits(range)), sep = "")
>> ltext(max(x), 0.02 * max(y), txt, font = 2, cex = 0.7, adj = c(1,
>> 0), col = grey(0.3))
>> }
>>
>> cheers,
>> Paul
>>
>>
>>
>>
>> G. Allegri wrote:
>> > Sorry for the many posts I'm sending...
>> > I need to plot the a-priori variance on an anisotropic variogram plot.
>> > I've tried using the panel argument, this way:
>> >
>> > plot(t0VARIO,VgmANIS_ZON,panel=function(x,y){panel.abline(h=var(t0$EceZ))})
>> >
>> > where,
>> > t0VARIO is the ESV
>> > VgmANIS_ZON is an zonal anisotropic model (two directions)
>> >
>> > The problem is that, using the panel function the a-priori variance
>> > line is plotted on both the direction panels, but not the variograms
>> > and the model.
>> > Are there other ways to add graphics to variogram plots?
>> >
>> > Thanks again for precious support!
>> > Giovanni
>>
>>
>>> ------------------------------------------------------------------------
>>>
>> >
>> > _______________________________________________
>> > Gstat-info mailing list
>> > Gstat-info at geo.uu.nl
>> > http://mailman.geo.uu.nl/mailman/listinfo/gstat-info
>> >
>>
>>
>>
>> --
>> Drs. Paul Hiemstra
>> Department of Physical Geography
>> Faculty of Geosciences
>> University of Utrecht
>> Heidelberglaan 2
>> P.O. Box 80.115
>> 3508 TC Utrecht
>> Phone: +31302535773
>> Fax: +31302531145
>> http://intamap.geo.uu.nl/~paul
>>
>>
>>
<
--
Drs. Paul Hiemstra
Department of Physical Geography
Faculty of Geosciences
University of Utrecht
Heidelberglaan 2
P.O. Box 80.115
3508 TC Utrecht
Phone: +31302535773
Fax: +31302531145
http://intamap.geo.uu.nl/~paul
More information about the Gstat-info
mailing list