1. ホーム
  2. r

[解決済み] ggplot2 で大きなポリゴンマップの小さな領域をプロットする

2022-02-12 22:11:52

質問

シェイプファイルを強化し、ggplot2 で以下のようにプロットしました。 geom_polygon . この地図の小さな領域だけをプロットするにはどうしたらよいでしょうか?

地図全体はきれいに見えるのですが、小さな領域がぐちゃぐちゃになってしまいました。

以下は動作例です。 この小さなシェープファイルは、以下のサイトから取得できます。

http://www.mappinghacks.com/data/TM_WORLD_BORDERS_SIMPL-0.2.zip

#read data
spf<-readOGR(getwd(),"TM_WORLD_BORDERS_SIMPL-0.2")
spf@data$id<-rownames(spf@data)

#fortify
spf1<-fortify(spf,region="id")

#full plot
ggplot(spf1)+geom_polygon(aes(long,lat,group=group),colour="grey90")

<イグ

#subset plot #this is messy since polygons are broken
ggplot(spf1)+geom_polygon(aes(long,lat,group=group),colour="grey90")+
scale_x_continuous(limits = c(-2, 2))+
scale_y_continuous(limits = c(50, 51))

<イグ

ありがとうございます。

解決方法は?

その limits の引数は scale_x_...scale_y... は、スケールの限界を設定します。これらの限界の外側にある値は描画されません(基礎となるデータは削除されます)。これには、部分的にしかこの限界の外にない要素(多角形など)も含まれます。

をしたい場合 ズーム を使用すると、座標の制限を設定することにより、プロットを行うことができます。 xlimylim 引数を coord_.... 関数、From ?coord_cartesian

座標系に制限を設けると、プロットが拡大されます(虫眼鏡で見ているような感じ)。スケールに制限を設けるように、基礎となるデータを変更することはありません。

あなたの場合 map を使用することができます。 coord_map これは、地図投影法を用いてデータを投影します。

エグ

ggplot(spf1, aes(x=long,y=lat,group=group)) + 
  geom_polygon(colour  = 'grey90') +
  coord_map(xlim = c(-2, 2),ylim = c(50, 51))

<イグ