2013-08-19 21 views
7

私はgeom_polygonを使用してggplot2で強化しプロットしたシェイプファイルを持っています。この地図の小さな領域だけをどのようにプロットすればよいですか?ggplot2の大きなポリゴンマップの小さな領域をプロット

私のフルマップはうまく見えますが、私の小さな領域は台無しです。ここで

は実施例である:

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

#read data 
spf<-readOGR(getwd(),"TM_WORLD_BORDERS_SIMPL-0.2") 
[email protected]$id<-rownames([email protected]) 

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

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

fullplot

#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)) 

enter image description here

ありがとう: この小さなシェープファイルから取得することができます。

+1

さあ。どのパッケージが使用されているか。お願いします? –

+0

申し訳ありません。ライブラリを宣言するのを忘れてしまった。 'require(rgdal)' 'require(ggplot2)' – rmf

答えて

13

scale_x_...scale_y...の引数がlimitsで、スケールの制限が設定されています。これらの限度外の値は描画されません(基底のデータは破棄されます)。これには、部分的にしかこれらの制限の外にある要素(ポリゴンなど)が含まれます。

あなたはズームに座標上の制限を設定することでのプロットをしたい場合は、座標系の?coord_cartesian

から、coord_....機能にxlimylim引数を使用する設定の制限が拡大されますプロット(あなたが虫めがねでそれを見ているようなもの)は、スケールの限界を設定するような基礎データを変更しません。あなたのケースでは

あなたは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)) 

enter image description here

+2

もう一つのコメントは、 'coord_map'は経度 - 緯度として座標を指定するか、特定の投影を指定する必要があるということです。 UTM座標の場合、 'coord_cartesian'を使うのが良いでしょう。 – rmf

関連する問題