Rの緯度、経度、グリッドデータを使用してグローバルマップをプロットしようとしています。これはimage関数とimage.plot関数を使用しています。さらに、私は土地のために世界の海岸線を覆う必要があります。しかし、グリッドデータのイメージ上に正確にマップを配置する方法がわかりません。マップはコンソールの左側にビットシフトされて表示され、その部分も表示されません。以下のサンプルコードでランダムグリッドデータを参照してください。イメージプロット上にワールドマップをオーバーレイするR
remove(list=ls())
library(fields)
library(maps)
grid_lon<-c(0.5:1:359.5)
grid_lat<-c(-89.5:89.5)
temp1<-matrix(data = rexp(200, rate = 10), nrow = 360, ncol = 180)#random matrix
zlim=c(0,0.25)
par(oma=c(3,0,0,0))# c(bottom, left, top, right)#plot margins
image(grid_lon,grid_lat,temp1,axes=FALSE,xlab='',ylab='')
map("world", fill=TRUE, col="white", bg="white", ylim=c(-90, 90),add=TRUE)
title(main ='Main title')
image.plot(zlim=zlim,legend.only=TRUE,horizontal=TRUE,legend.mar=0.4,legend.shrink=0.4,legend.width=0.4,nlevel=64,axis.args = list(cex.axis =1,at=zlim, labels=zlim,mgp=c(1, 0, 0),tck=0),smallplot=c(.25,.72, 0,.030),
legend.args=list(text=expression(textstyle(atop('anomaly',
paste('(meters)')),cex.main=1.2)),cex=1.2, side=1, line=1.6)
)#end image.plot
box()
こんにちはピーター、私はこのケースでは、ラスタ機能を使用couldntの理由は、私が欲しいですgrid_latおよびgrid_lonからの座標情報を使用してグローバルデータをプロットするための行列temp1。 temp1は360 * 180(Long * Lat)のグローバルグリッドで、画像関数はパラメータを読み込み、Lat * Longのように180 * 360グリッドを表示します。さらに、転置を取るだけでは、この場合もプロットも正しい位置に座標を配置してプロットする必要がありません。 – Munish
私がよく理解すれば、あるソースまたはルーチンからtemp1を360 * 180の行列として取得します。私はこの面を見落としていました。しかし、なぜ転置は機能しないのですか?たとえそれが逆さまの地図を生成しても(私はそれがなぜ起こるのかわかりません)、適切な方向を復元するのは簡単でしょう。ところで、マップパッケージには、画像にプロットできる「map2」という太平洋中心の(180E)マップがあります。 –
助けてくれてありがとうPeter、私は私の目的を果たすソリューションを投稿しました。 – Munish