2016-04-08 5 views
1

私は何か非常に基本的なことをするのに苦労しています。私は何百回も他のマップで何の問題もなしましたが、ggplot2を使って適切にマップするためのシェイプシェイプファイルを取得できません(例として、塗りつぶしとして「AREA」をマップしようとしています。 cshapesシェイプファイルが付属しています)。あなたは東半球のためのデータが欠落している見ることができるようenter image description here、:cshapesとggplot2を使ってRでchoroplethマップを作成するには?

library(cshapes) 
    library(ggplot2) 
    world <- cshp(date=as.Date("2009-1-1")) 
    [email protected]$id <- rownames([email protected]) 
    world.df = fortify(world, region="COWCODE") 
    world.df <- join(world.df, [email protected], by="id") 
    ggplot() + geom_polygon(data=world.df, 
    aes(x = long, y = lat, group = group,fill = AREA)) 
    +coord_equal() 

私は何で終わることは以下の通りである。ここで私が使用しているコードです。何が起こっているかわからない、どんな援助も非常に感謝しています。

答えて

3

ididと一致しませんでしたworld.dfであり、したがって、NAsは、idによって結合して導入された。

あなたが地域を設定し、SP_IDで参加した場合、それは動作します:

world <- cshp(date=as.Date("2009-1-1")) 

world.df = fortify(world, region="SP_ID") 
names(world.df)[6] <- "SP_ID" 

world.df <- join(world.df, [email protected]) 

enter image description here

+1

私は、ありがとう! –

3

私は問題を理解しました。 fortify()で作成したデータフレームを調べて元のデータに戻したところ、NAがマージで生成されていました。理由は分かりません。だから私はfortify()のために?help関数を使うことにしました。私は引数と値が不足しているかどうかを確認するために、 "この関数を使うのではなく、より広い範囲のメソッドを実装するほうきパッケージを使用することをおすすめします。将来的には廃止されるはずです。私は以前これを見たことがなかったし、なぜ過去に何の問題もなかった理由を説明しています。だから私はlibrary(broom)をチェックアウトし、同等の機能ではそうのように、うまく働く、tidy()です:

次生成
library(broom) 
library(cshapes) 
library(ggplot2) 
library(dplyr) 
world <- cshp(date=as.Date("2009-1-1")) 
[email protected]$id <- rownames([email protected]) 
world.df = tidy(world) 
world.df$arrange<-1:192609 ###Needs be reordered (something fortify did automatically)### 
world.df <- join(world.df, [email protected], by="id") 
world.df<-arrange(world.df, arrange) 
ggplot() + geom_polygon(data=world.df, 
    aes(x = long, y = lat, group = group,fill = AREA)) 
    +coord_equal() 

:あなたが作成した

enter image description here

+1

をコードに足を踏み入れるworddf4とworddf5があります。私はあなたがこのbeautifullの例のコードをちょっと編集する必要があると思います – Cedric

+0

@Cedricビンゴがそれに感謝して、ちょっとした誤字がありました! –

関連する問題