5

(x,y,z)いくつかのデータポイントを含むデータフレームがあります。これ(x,y)は、サイズの経度-緯度セルの右下の座標ですw(たとえば、1度のグリッド)。値はこのzセルで平均化されています。

グリッドセル全体がから派生した色で塗りつぶされるように、これらのポイントをRでプロットしたいと思いzます。

結果は、次のいずれかの画像のようになります。 経度-緯度グリッドセルが塗りつぶされました

射影自体(ランベルト正角円錐図法、正距円筒図法など)は重要ではなく、グリッドセルのプロットだけが重要です。

私のデータはまばらです。すべての経度-緯度セルにデータが関連付けられているわけではありません。

私の希望は、

library(maps)
map("state")
grid_points(my_data,c("x","y","z"),0.5)

ここで、0.5は上記のグリッド解像度であり、0.5度のセルを示します。

何かご意見は?

ありがとう!

4

4 に答える 4

7

spplotまたはを使用する代わりに、を使用することもimageできますggplot2。関連するジオメトリはとgeom_rasterですgeom_tile。前者はパフォーマンスが向上し、ファイルが小さくなるはずであり、後者はより標準的です。次の呼び出し例:

ggplot(aes(x = x, y = y, fill = value), data = dat_grid) + geom_tile() + 
  geom_path(data = ant_ggplot)

私のこのブログ投稿から始まります。さらに、パッケージggplot2全体のさまざまな投影をサポートします。詳細については、を参照してください。mapprojcoord_map

YOUR_DATA以下は実際の例です( x、y、z列を持つように定義した場合)。

library(ggplot2)
library(maps)
us_states <- map_data("state")
(ggplot(aes(x=x,y=y,fill=z),data=YOUR_DATA) + geom_tile())+geom_polygon(data=us_states,aes(x=long, y=lat, group=group), colour="black", fill="white", alpha=0)
于 2012-06-23T11:03:43.740 に答える
3

data.frameが「x」の場合は、次のことを試してください。

library(sp)
coordinates(x) <- c("x", "y", "z")
gridded(x) <- TRUE
image(x, col = terrain.colors(256), useRaster = TRUE)

本当に正確な答えを得るには、データのサンプル、できればdata.frame全体、またはダウンロードしたソースと、それをRに読み込むために使用したコードを提供する必要があります。

上記のコードがgridded()<-ステップで失敗した場合はxy値が実際には通常のグリッドを提供していない可能性があります。これは、プロットによって示されます。それらが実際にグリッド化された経度/緯度の値であり、それらを画像内の値に投影する必要がある場合は、rasterパッケージ、またはより一般的にはrgdalパッケージを参照してください。

library(raster)
?projectRaster

library(rgdal)
?project
?spTransform

(プロットは、このサイトに示されているように、「北アメリカのアルベルス正積円錐図法とランベルト正角円錐図法」の1つのように見えます:http://www.colorado.edu/geography/gcraft/notes/mapproj/mapproj_f.html)。

またはで使用できる射影のPROJ.4文字列を取得するには、http: //spatialreference.orgを参照してください。spraster

于 2012-06-22T22:43:06.333 に答える
2

私は最近その種のマップを作成しようとしましたがinterp、ライブラリの機能を使用akimaして、プロットする前にzデータを通常のグリッドに内挿することになりました(使用する前にあらゆる種類の投影を行う必要がありますinterp)。

library(akima)
interp(x,y,z,xo=seq(min(x),max(x),by=0.5),yo=seq(min(y),max(y),by=0.5),extrap=FALSE,linear=TRUE) -> xygrid
image(xygrid,breaks=seq(min(z),max(z),length=10), col=1:10)
于 2012-06-23T07:02:00.857 に答える
0

あなたはこれを行うことができます:

library(raster)
r <- rasterFromXYZ(xyz)
plot(r)
于 2015-10-15T03:32:07.637 に答える