2017-03-01 22 views
1

私は世界と米国の州の地図を作成しようとしています。 (島の一部である)世界+米国の州地図で塗りつぶし

library(maps) 
library(ggplot2) 
library(dplyr) 

states_map <- map_data("state") 
world_map <- map_data("world") 

world_map <- world_map %>% 
    filter(region != "Antarctica") 

states <- c("texas") 

world <- c("Alaska", 
      "Canada", 
      "France") 

world_map$region <- ifelse(world_map$subregion == "Alaska", "Alaska", world_map$region) 

world_map$status <- ifelse(world_map$region %in% world, TRUE, FALSE) 
states_map$status <- ifelse(states_map$region %in% states, TRUE, FALSE) 

ggplot() + 
    geom_map(aes(map_id = region, fill = status), 
      map = world_map, 
      data = world_map, 
      color = "black") + 
    geom_map(aes(map_id = region, fill = status), 
      map = states_map, 
      data = states_map, 
      color = "black") + 
    expand_limits(x = world_map$long, y = world_map$lat) 

をしかし、フランスのどれが正しく色付けされていない、とカナダのほとんどではありません:私の考えは、世界地図を描くこと、そしてその上に米国の州のマップを描画した

world

ここで間違っていますか? 「世界」からカナダを除外すると、すべてがうまくいくことに注意してください。

+0

興味深い問題です。 「テキサス」は大文字ではなく、「アラスカ」は本当に国家であることが重要ですか? – ddunn801

+0

アラスカはstate_map(ハワイも)では表示されません。 "region"変数はstate_mapデータで大文字に変換されないので、あとで一致するように(ifelse文)、 "texas"は大文字にするべきではありません。 – Alex

答えて

0

問題は、使用している国のデータセットがこの目的に適していないことです。

ggplot() + 
    geom_map(aes(map_id = region, fill = status), 
      map = world_map[world_map$group == 558,], 
      data = world_map[world_map$group == 558,], 
      color = "black") + 
    expand_limits(x = world_map$long, y = world_map$lat) 

france map

:それは実際にグループ558であり、それにデータを持たない領域またはサブ領域列の着色の問題が発生し、多くの重複図形が含まれており、国が悪い、適切

フランスのラベルが付いています

これはあなたの直接のカラーグループ558

map_data("world2")は、この問題を持っているように見えるが、PERSない場合であっても、それは着色だ隠すヨーロッパを説明し、いくつかの形状、下にもあります使用pectiveは異なります。

enter image description here

私はよりよい文書化シェープファイルをダウンロードし、代わりにマップするために、これらを使用してお勧めします。

関連する問題