2015-09-14 2 views
1

Я выполнил пространственную интерполяцию в R с некоторыми данными и застрял в создании карты. Для этого я должен использовать spplot. Когда я тестирую образец кода оттуда:Добавление текста в spplot [R]

data(meuse) 
coordinates(meuse) <- ~x+y 
l2 = list("SpatialPolygonsRescale", layout.north.arrow(), offset = 
c(181300,329800), scale = 400) 
l3 = list("SpatialPolygonsRescale", layout.scale.bar(), offset = 
c(180500,329800), scale = 500, fill=c("transparent","black")) 
l4 = list("sp.text", c(180500,329900), "0") 
l5 = list("sp.text", c(181000,329900), "500 m") 

spplot(meuse, c("ffreq"), sp.layout=list(l2,l3,l4,l5), 
col.regions= "black", pch=c(1,2,3), 
key.space=list(x=0.1,y=.95,corner=c(0,1))) 

все работает по назначению. Когда я применяю это мой набор данных, я получаю сообщение об ошибке

Error in printFunction(x, ...) : 
    (list) object cannot be coerced to type 'double' 

Это как мой код выглядит следующим образом:

l2 = list("SpatialPolygonsRescale", layout.north.arrow(), offset = 
      c(5400000,500000), scale = 400) 
l3 = list("SpatialPolygonsRescale", layout.scale.bar(), offset = 
      c(5400000,500000), scale = 25000, fill=c("transparent","black")) 
l4 = list("sp.text", c(5400000,500000), "0") 
l5 = list("sp.text", c(5400000,500000), "25 km") 

# Use the ColorBrewer library for color ramps 
library(RColorBrewer) 
precip.pal <- colorRampPalette(brewer.pal(7, name="Blues")) 

# plot the interpolation 
spplot(bla.krige, zcol='bla.pred', col.regions=precip.pal,contour=TRUE, 
     col='black', 
     pretty=TRUE, 
     scales=list(draw = TRUE), 
     labels=TRUE, 
     layout=list(l2,l3,l4,l5)) 

Любая идея, как я могу решить эту проблему? Мои данные выглядят почти так же, как в примере, приведенном в документации spplot. Спасибо за любые подсказки!

ответ

1

Я нашел решение самостоятельно ... Я был немного неряшлив.

  1. Хотя вызов пакета sp, аргумент еще sp.layout, а не только layout (RTFM вопрос).
  2. Я смешал широту и долготу в своей пространственной протяженности. Так должно быть c(500000,5400000), а не c(5400000,500000).
+0

Что касается вашей первой проблемы, вы должны знать, что в R. не является оператором доступа к члену, как в других языках программирования (Java, C#), это просто обычная буква, которая может использоваться для именования переменных и методов. Я полагаю, поэтому вы считали, что можете пропустить sp. –

+0

Хорошо, это была моя мысль как пользователь python heh – GeoEki

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