3

北極圏の地図を極心平射投影法でプロットしようとしています。これを行うために、rGDALパッケージを使用してすでに投影されたシェープファイルをRにインポートしました。

ds <- readOGR(dsn = path, layer = "10m_coastline_ps")

これにより、が作成されますSpatialLinesDataFrameSpatialLinesDataFrame関数を使用してこれをプロットすると、およびパラメーターplot()を使用してプロット制限を設定できません。xlimylim

plot(ds, xlim=c(-1700000,1700000), ylim=c(-4000000,800000), axes=T)

このplot()関数は、アスペクト比を自動的に1に設定し、軸の制限を強制します(この投稿で説明されているように、igraph axis xlim ylim plotが正しくありません)。これにより、次のプロットが生成されます。

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

以下に示すように、SpatialLinesDataFrameをプロットする前に、プロット範囲を初期化してみました。

mapExtentPr <- rbind(c(-1700000,-4000000), c(1700000,800000))
plot(mapExtentPr, pch=NA)
plot(ds, xlim=c(-1700000,1700000), ylim=c(-4000000,800000), axes=T, asp = 1, add=TRUE)

これにより適切な制限が設定されますが、アスペクト比は維持されません。clip()効果のない機能も使ってみました。

アスペクト比を1に維持しながら(ggplotまたはを使用せずにspplot)プロット制限を正確に設定する方法はありますか?

注:私はすでにこの答えを確認しました:プロットがすでに描画されているときにylimとxlimを変更することは可能ですか?

4

1 に答える 1

3

私はこれを使用することになりました:

xmin <- -1700000
xmax <- 1700000
ymin <- -4000000
ymax <- 100000

asratio = (ymax-ymin)/(xmax-xmin)

png("greenland_map.png",width=500,height=ceiling(500*asratio))

#plot basemap
plot(ne_10m_coastline_ps,xlim=c(xmin,xmax), ylim=c(ymin,ymax),
     axes=TRUE,asp=1,xaxs="i",yaxs="i")

par(usr=c(xmin,xmax,ymin,ymax))

dev.off()

正確な軸制限のあるマップ

于 2013-04-25T22:12:33.930 に答える