0

グリッドがあり、このグリッドからいくつかのマップ要素 (縮尺、方位記号など) を使用してマップを作成したいと考えています。必要なグリッドとカラーリングを問題なく描画できますが、追加のマップ要素がマップに表示されません。マニュアルfirst=TRUEに従って sp.layout 引数に入れてみましたが、それでも成功しません。sp

統合された meuse データセットで問題を再現したので、そのコードをコピーして貼り付けてください。私はこれらのパッケージバージョンを使用します:lattice_0.20-33そしてsp_1.2-0

library(sp)
library(lattice) # required for trellis.par.set():
trellis.par.set(sp.theme()) # sets color ramp to bpy.colors()

alphaChannelSupported = function() { 
  !is.na(match(names(dev.cur()), c("pdf")))
}

data(meuse)
coordinates(meuse)=~x+y
data(meuse.riv)


library(gstat, pos = match(paste("package", "sp", sep=":"), search()) + 1)
data(meuse.grid)
coordinates(meuse.grid) = ~x+y
gridded(meuse.grid) = TRUE
v.uk = variogram(log(zinc)~sqrt(dist), meuse)
uk.model = fit.variogram(v.uk, vgm(1, "Exp", 300, 1))
meuse[["ff"]] = factor(meuse[["ffreq"]])
meuse.grid[["ff"]] = factor(meuse.grid[["ffreq"]])
zn.uk = krige(log(zinc)~sqrt(dist), meuse, meuse.grid, model = uk.model)
zn.uk[["se"]] = sqrt(zn.uk[["var1.var"]])

meuse.sr = SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)),"meuse.riv")))
rv = list("sp.polygons", meuse.sr, fill = "lightblue")
sampling = list("sp.points", meuse.riv, color = "black")
scale = list("SpatialPolygonsRescale", layout.scale.bar(), 
             offset = c(180500,329800), scale = 500, fill=c("transparent","black"), which = 4)
text1 = list("sp.text", c(180500,329900), "0", cex = .5, which = 4)
text2 = list("sp.text", c(181000,329900), "500 m", cex = .5, which = 4)
arrow = list("SpatialPolygonsRescale", layout.north.arrow(), 
             offset = c(181300,329800), 
             scale = 400, which = 4)

library(RColorBrewer)
library(lattice)
trellis.par.set(sp.theme())
precip.pal <- colorRampPalette(brewer.pal(7, name="Blues"))

spplot(zn.uk, "var1.pred",
       sp.layout = list(rv, sampling, scale, text1, text2),
       main = "log(zinc); universal kriging standard errors",
       col.regions=precip.pal,
       contour=TRUE, 
       col='black',
       pretty=TRUE,
       scales=list(draw = TRUE),
       labels=TRUE)

そして、それがどのように見えるか...すべて裸です: ここに画像の説明を入力 だから私の質問:

  1. スケールバー、北向き矢印などはどこに隠れていますか? 私は何か見落としてますか?インターネットで見つけることができるすべての例は、それに似ています。私自身のデータセットでは、縮尺記号と北向き矢印が最初に描かれているのを確認できますが、グリッドがレンダリングされるとすぐに、追加のマップ要素が重ね合わされます (バーではなく、縮尺テキストを除いて、マップに表示されます)。何らかの理由で私が理解していないようです)。
  2. マップに表示されるエラー メッセージは、サンプリング場所を追加しようとすると表示されますsampling = list("sp.points", meuse.riv, color = "black")。このエントリがないと、マップはエラーなしで表示されますが、追加のマップ要素も表示されません。マップ上にサンプリング ポイントを表示するにはどうすればよいですか (たとえば、サイズがこのサンプリング ポイントの絶対値に依存する円で)。

これは今まで何時間も私を悩ませてきましたが、これに対する解決策が見つかりません. Bivand et al の教科書 (2013) "Applied Spatial Data Analysis with R" では、次のエントリを読むことができました。

sp.layout 引数内のアイテムの順序は重要です。原則として、オブジェクトは出現順に描画されます。デフォルトでは、splot のオブジェクトに点または線がある場合、点の前に sp.layout アイテムが描画され、背景としてグリッドとポリゴンを描画できるようになります。グリッドとポリゴンの場合、sp.layout アイテムは後で描画されます (そのため、グリッドやポリゴンによってアイテムが上書きされることはありません)。グリッドの場合、最初にリスト要素を追加 = TRUE すると、グリッドが描画される前にアイテムが描画されます (たとえば、塗りつぶされたポリゴンが追加されるとき)。透明度は、レイヤーを結合するときに役立ちます。PDF デバイスおよびその他のいくつかのデバイスで使用できます。関数 sp.theme は、splot によって作成されるプロットに役立つラティス テーマを返します。これを有効にするには、デバイスを開くか変更した後に trellis.par.set(sp.theme()) を使用します。

ただし、この追加情報でも、この問題を解決できませんでした。ヒントをいただければ幸いです。

4

1 に答える 1

2

見落としている要素は、存在しないパネル 4 で描画されているため、描画されていません。を削除してみてくださいwhich = 4

meuse.rivあなたの例では、エラーメッセージの原因となるマトリックスですが、SpatialPointsオブジェクトである必要があるため、次のように作成samplingします。

sampling = list("sp.points", SpatialPoints(meuse.riv), color = "black")

例に基づいて作業する場合、私のアドバイスは、必要なものにできるだけ近い例を選択し、一度に 1 つのことだけを変更することです。

于 2015-09-15T17:56:33.943 に答える