1

空間オブジェクトのプロットからマージンを削除できないようです。この場合、他のタイプのプロットに投稿されたソリューションは機能しないようです。パーmaioma引数も失敗します。アドバイスにとても感謝しています。

library(maptools)
data(wrld_simpl)
bbox = cbind(c(179,179,-179,-179,179), c(89,-89,-89,89,89))

png('test.png', width=1000, height=500)
par(mai=c(0,0,0,0), oma=c(0,0,0,0))
plot(wrld_simpl, col='grey', bg='white', border=NA)
lines(bbox, col='red', lwd=3)
dev.off()
browseURL('test.png')

赤い境界ボックスは、グラフィカルな出力境界のすぐ内側にプロットする必要があります。

ここに画像の説明を入力

4

1 に答える 1

7

編集: この回答は、データセットの問題を示すために 2019 年 3 月 9 日に書き直されました。プロット アプローチは依然として正しいですが、出力は期待どおりではない可能性があります。


あなたの質問は、

出力画像ファイルのマップ データの周りにパディングがないようにマップをプロットするにはどうすればよいですか。

これは、プロットの周りに余白なしでマップ図をプロットすることを意味します。もう 1 つの要件は、正しい縦横比と定義された緯度と経度の範囲でマップをプロットすることです。世界地図の場合、北 90 度から南 90 度、西 180 度から東 180 度が必要です。

require(maptools)
data(wrld_simpl)

# set up the output file
png('test.png', width=1200, height = 600, res = 300)

# define the plot and margins
par(ann = FALSE,
    bg = "white",
    bty = "n",
    mai = c(0,0,0,0),
    mgp = c(0, 0, 0),
    oma = c(0,0,0,0),
    omd = c(0,1,0,1),
    omi = c(0,0,0,0),
    usr = c(-180, 180, -90, 90),
    pin = c(4,2),
    plt = c(0,1,0,1),
    pty = "m",
    xaxs = 'i',
    xaxt = 'n',
    xpd = FALSE,
    yaxs = 'i',
    yaxt = 'n')
# plot the world map
plot(wrld_simpl,
     col='grey',
     bg='white',
     border=NA,
     ann=FALSE,
     axes = FALSE)
# plot points at extremes
par(new = TRUE)

plot(c(0,0,-180,180),c(90,-90,0,0), type = "p", col = "red",pch="+", cex=0.5)

dev.off()
browseURL('test.png')

この図は、北極から南極まで、および反子午線との間で定義されています。par()これは、グラフィックが設定されている の usr... 部分を使用して行われます。

グラフィックの端に対するプロットの範囲を示すために、4 つの赤い十字を追加しました。それらは北極と南極、赤道に沿って +/- 180 度にあり、プロットの限界を設定した場所でもありました。

ポイントは、マップが東西および南北に適切なサイズであることを示しています。北極の下には陸地がないので、北の白い部分が正解です。北極の地理を忘れると、白い国境の隙間のように見えるかもしれません. しかし、南極大陸の南極の北には空白があり、それは土地として表示されるべきです (一部の読者にとっては、画像の周りの境界線のように見えたかもしれません)。はるか南に海や国境がない(したがってデータポイントが必要ない)という事実が問題を引き起こすと思います。wrld_simplのデータを調整して、それに対処できると思います。

別のオプションはpar()、プロットされた領域が南に行かないように調整することですが、私はそれには満足していません.

ここに画像の説明を入力

于 2013-07-13T20:39:38.097 に答える