10

x と y が通常のグリッド上にない (x、y、z) 形式のデータがあります。これらのデータの 2D カラーマップを、強度 (グレースケールなど) を z 変数にマッピングして表示したいと考えています。明らかな解決策は、通常のグリッドで補間 (以下を参照) することです。

d <- data.frame(x=runif(1e3, 0, 30), y=runif(1e3, 0, 30))
d$z = (d$x - 15)^2 + (d$y - 15)^2


library(akima)
d2 <- with(d, interp(x, y, z, xo=seq(0, 30, length = 30),
                     yo=seq(0, 30, length = 50), duplicate="mean"))

pal1 <- grey(seq(0,1,leng=500))
with(d2, image(sort(x), sort(y), z, useRaster=TRUE, col = pal1))
points(d$x, d$y, col="white", bg=grey(d$z/max(d$z)), pch=21, cex=1,lwd=0.1)

ここに画像の説明を入力

ただし、これにより初期メッシュの情報 (実際のデータを含むポイントの位置) が失われ、特定の場所で非常に細かくまたは非常に粗くなる可能性があります。私の好みは、元のデータ ポイントの実際の位置と密度を正確に表す、三角形を使用した delaunay タイリングです。

理想的には、ソリューションは

  • ggplot2結果のポリゴンが、lattice、またはベース グラフィックスのいずれかでプロットされるように、プロット関数の外でテッセレーションを計算します。

  • 早くして。私の実際の例 (~1e5 ポイント) では、テッセレーション ビアの計算deldirが非常に遅くなる可能性があります。

「テッセレーション」とは、ドロネー三角形またはボロノイ図のいずれかを意味しますが、私の好みは前者です。ただし、元のデータ ポイントに基づいて各三角形の色を補間する複雑さが増します。

4

2 に答える 2

4

パッケージに基づくソリューションdirichletは次のとおりです。maptools

d <- data.frame(x=runif(1e3, 0, 30), y=runif(1e3, 0, 30))
d$z = (d$x - 15)^2 + (d$y - 15)^2

library(spatstat) 
library(maptools)

W <- ripras(df, shape="rectangle") 
W <- owin(c(0, 30), c(0, 30)) 
X <- as.ppp(d, W=W) 
Y <- dirichlet(X) 
Z <- as(Y, "SpatialPolygons") 
plot(Z, col=grey(d$z/max(d$z)))

ディリクレ

この SpatialPolygons クラスからポリゴンを抽出する方法がまだわかりません。

また、関連する delaunay テッセレーションの「正しい」色を生成する簡単な方法があれば、それを聞きたいです。

于 2011-04-11T02:47:35.253 に答える
2

を使用した格子解は次のとおりです。deldir

d <- data.frame(x=runif(1e3, 0, 30), y=runif(1e3, 0, 30))
d$z = (d$x - 15)^2 + (d$y - 15)^2

pal1 <- grey(seq(0,1,leng=500))
library(latticeExtra)

 levelplot(z~x*y, data=d,
           panel = function(...) panel.voronoi(..., points=FALSE),
           interpolate=TRUE,
           col.regions = colorRampPalette(pal1)(1e3), cut=1e3)

ここに画像の説明を入力

于 2016-03-20T00:25:52.867 に答える