2017-08-29 10 views
2

私はRを使うのは比較的新しいので、データを使って米国の州の地図を作成して、特定のエリアの輪郭や色をつけようとしています。私は州とその郡を黒で概説して表示しようとしています。さらに、私はいくつかのデータに基づいていくつかの郡を色分けして、郡のグループの周りに太い赤い枠線を作成したいと思います。ggplot2を使用して、米国郡のグループの周りに境界線を作成するにはどうすればよいですか?

基本的に私は、これら2枚の画像を合成したい:

I would like to changed this map to outlines of the coloured areas, so -for example - there would be a red border around everything blue.

Then I would like to fill the map above like this

これは私がこれまでにこの仕事をしようと書かれているコードです:

# Maping IA, plan 74406IA0010001 

# Importing data 
library(ggplot2) 
library(ggmap) 
library(maps) 
library(mapdata) 
library(stringr) 
library(plyr) 
library(dplyr) 

setwd("/Users/erinmay/Desktop/WL_RA/marketplace2/data") 

county <- map_data("county") 
plan <- read.csv("IA_2017.csv") 

# Using subset 

iowa <- subset(county, region=="iowa") #county point files for iowa 

# Merging in map data 

countyplan <- merge(x=iowa, y=plan, by=c("region","subregion"), all.x=TRUE) 

countyplan <- countyplan[order(countyplan$chosen_plan),] 

# Creating map 

final <- ggplot(data=countyplan) + 
      geom_path(aes(x=long,y=lat,group=RatingArea),colour='black') + 
      geom_polygon(aes(x=long,y=lat,group=group,fill=chosen_plan)) + 
      coord_map() + coord_fixed(1.3) 

ggsave(final,height=6,width=10,unit='in',file='iowa.pdf') 

ありがとうございました!ここで

はデータです:

限り、私はそれを理解するよう、すべてのポリゴンが同じように作られている:のみ、各評価領域の国境を色にOPの明確化に基づく https://www.dropbox.com/s/x8x2l50dvmg0lsb/QHP_IA_2017.csv?dl=0

+0

サンプルデータはありますか?それはソリューションのテストに役立ちます。 [mcve](https://stackoverflow.com/help/mcve)と[Rの再現可能な例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible)を参照してください。例)。 –

答えて

0

編集答えどこにggplotが関係しているのですか?したがって、ポリゴンのアウトラインに色を付ける必要がある場合は、隣接する2つのポリゴンが同じレーティングエリアに属しているかどうかにかかわらず、すべての面で同様に行います。

と同じ計画領域にディゾルブポリゴンがあり、がデータフレームに強化されます。

library(maps); library(dplyr); library(tidyr); library(maptools); library(rgeos) 

# get map data 
county_map <- map("county", fill = T, plot = FALSE) 

# create mapping table between county names & rating areas 
county_map_match <- data.frame(name = county_map$names) %>% 
    separate(name, c("region", "subregion"), sep = ",", remove = FALSE) %>% 
    left_join(plan %>% select(region, subregion, RatingArea)) 
rownames(county_map_match) <- county_map_match$name 

# convert map to SpatialPolygon, then join with mapping table for SpatialPolygonDataFrame 
county_map <- map2SpatialPolygons(county_map, IDs = county_map$names) 
county_map <- SpatialPolygonsDataFrame(county_map, county_map_match) 

# remove invalidities in the county map 
gIsValid(county_map) #returns FALSE: there are invalid self-intersecting geometries in the polygons, which will cause problems 
county_map <- gBuffer(county_map, byid = TRUE, width = 0) 
gIsValid(county_map) #returns TRUE 

# dissolve county map by rating area & fortify to data frame 
area_map <- unionSpatialPolygons(county_map, IDs = county_map$RatingArea) 
area_map <- fortify(area_map) 
area_map$group <- gsub(".1", "", x= area_map$group, fixed = T) 

あなたは評価領域のためのデータ・フレームバージョンを入手したら、あなたは組み込むことができます(あなたが戻ってポリゴンに既存のデータフレームに変換することができますが、それは元のデータソースからポリゴンデータを取得する方が簡単でしょう注意してください。)それggplotへ:

ggplot(countyplan, 
     aes(x=long,y=lat, group = group, fill = chosen_plan)) + 
    geom_polygon(size = 0.5, colour = "black") + 
    geom_polygon(data = area_map, 
      aes(x=long, y=lat, group = group, colour = group), 
      fill = NA, size = 2) + 
    scale_fill_manual(name = "Chosen Plan", values = c("darksalmon"), na.value = "grey") + 
    scale_color_discrete(name = "Rating Area") + 
    coord_map() + coord_fixed(1.3) 

edited ggplot with outer borders coloured

あなたが好きなら、scale_XX_brewer()呼び出しでそれらを使用& RColorBrewerパッケージからよりよいカラーパレットを得ることができます。個々の色の名前はここで参照できます:http://sape.inf.usi.ch/quick-reference/ggplot2/colour

+0

ほぼ!これは非常に役に立ちますので、どうもありがとうございます。レーティングエリアの内線を黒に変更し、レーティングエリアの外枠を色づけしておくだけの方法はありますか? – Erin

+0

@Erinは私の解決策を編集しました。 –

関連する問題