3

世界の海面水温の絵を描きたいのですが、sstの輪郭を塗りつぶした後、塗りつぶした絵にさらに広いカウンターを追加しようとすると、奇妙なことが起こり、これらの2つの絵が合わないのがコードです、元のデータを入れる余地がないので、ランダムな数字を使います

これがコードです

library(maps)

ee<-array(rnorm(89*180),dim=c(89,180))

lati <- seq(-90,90,length=89) #Latitudes goes from -90 to 90 as far as I know :)
long <- seq(-180,180,length=180)
plot(NA, xlim=c(-180,180), ylim=c(-90,90), xlab="", ylab="", xaxs="i", yaxs="i")
contour(long, lati, t(ee), add=TRUE)
filled.contour(long,lati,t(ee), color.palette=terrain.colors)
maps::map(database="world", fill=TRUE, col="light blue", add=TRUE)

ご覧のとおり、塗りつぶされた画像の位置は、唯一の輪郭画像などの元のデータと一致していません

何が問題ですか?

とうとう英語が下手でごめんなさい、ありがとうございました

4

1 に答える 1

3

filled.contourヘルプページで以下を読むことができます:

'filled.contour'によって生成される出力は、実際には2つのプロットの組み合わせです。1つは塗りつぶされた輪郭で、もう1つは凡例です。これらの2つのプロットには、2つの別々の座標系が設定されていますが、これらは内部でのみ使用されます。関数が返されると、これらの座標系は失われます。ポイントを追加するなど、メインの等高線図に注釈を付ける場合は、「plot.axes」引数でグラフィックコマンドを指定できます。例を参照してください。

したがって、これを例に適用しようとすると、次のようなことができます。

library(maps)
ee<-array(rnorm(89*180),dim=c(89,180))
lati <- seq(-90,90,length=89) #Latitudes goes from -90 to 90 as far as I know :)
long <- seq(-180,180,length=180)
draw.map <- function() {maps::map(database="world", fill=TRUE, col="light blue", add=TRUE)}
filled.contour(long,lati,t(ee), color.palette=terrain.colors, plot.axes=draw.map())

これは:

ここに画像の説明を入力してください

于 2013-03-22T13:35:55.333 に答える