2016-11-27 2 views
-1

Я пытаюсь показать некоторую модель вариограммы в верхней части xy.plots. panel.plots работать для всех, за исключением списка строк, которые я хотел добавить в соответствующие подзаголовки.Запланируйте список строк с R решеткой пакета

require(gstat) 
require(sp) 
data(meuse) 
names(meuse) 
#make directional variograms 
b<-variogram(log(zinc)~1, meuse, alpha = c(0, 45, 90, 135)) 
#split the variogram data by direction 
a<-lapply(1:length(unique(b$dir.hor)), 
      function(i) subset(b, grepl(unique(b$dir.hor)[[i]], b$dir.hor))) 
#get the model fit parameters for each directional variogram 
a<-lapply(1:length(unique(b$dir.hor)), 
      function(i) fit.variogram(a[[i]], vgm(0.5,"Exp", 1200, 0.5))) 
#generate model data for the directional variograms 
a<-lapply(1:length(a), function(i) 
    variogramLine(a[[i]], maxdist=1500)) 

#plot 
require(lattice) 
plot(b, ylim=c(0,1.2), xlim=c(0,1500), cex=1.5, 
    panel = function(x, y, ...) {panel.xyplot(x, y, ...) 
            panel.abline(v=1000, lwd=1, lty=3, col=2) 
            panel.lines(a[[i]], lwd=2, lty=2, col=4) 
    }) 

Последний аргумент в сюжете не работает, потому что это список (см ошибки на дисплее участка), не знает, как список строк должен быть построен с решеткой. Помощь будет оценена!

+1

http://stackoverflow.com/help/mcve –

+2

Как упомянуто @ Hack-R, пожалуйста, предоставьте рабочий пример. Данные 'meuse' находятся в' library (sp) 'FWIW. –

+0

@ RomanLuštrik сделано – ToNoY

ответ

0

Используйте packet.number() или panel.number(), чтобы найти личность текущей панели. Ваш пример потерпел неудачу, так как я наложил некоторые изменения, чтобы заставить его работать правильно.

library(gstat) 
library(sp) 
data(meuse) 

# make directional variograms 
b <- variogram(log(zinc) ~ x + y, meuse, alpha = c(0, 45, 90, 135)) 

# split the variogram data by direction 
a <- lapply(1:length(unique(b$dir.hor)), 
      function(i) subset(b, grepl(unique(b$dir.hor)[[i]], b$dir.hor))) 

# get the model fit parameters for each directional variogram 
a <- lapply(1:length(unique(b$dir.hor)), 
      function(i) fit.variogram(a[[i]], vgm(0.5, "Exp", 1200, 0.5))) 

# generate model data for the directional variograms 
a <- lapply(1:length(a), function(i) variogramLine(a[[i]], maxdist = 1500)) 

# plot 
require(lattice) 
plot(b, ylim = c(0, 1.2), xlim = c(0, 1500), cex = 1.5, 
    panel = function(x, y, ...) { 
     panel.xyplot(x, y, ...) 
     panel.abline(v = 1000, lwd = 1, lty = 3, col = 2) 
     panel.lines(a[[packet.number()]], lwd = 2, lty = 2, col = 4) 
    }) 

Imgur

Смежные вопросы