私はFIPSコードで接続された2つのデータセットを持つ米国の郡のchoroplethマップを作成しようとしています。私が作るためにここcounty
データセットを使用したいgeom_map "map_id"参照の問題
library(ggplot2)
library(maps)
library(data.table)
county <- map_data("county")
data(county.fips)
county.fips <- as.data.table(county.fips)
county.fips$polyname <- as.character(county.fips$polyname)
county.fips[, paste0("type", 1:2) := tstrsplit(polyname, ",")]
names(county.fips) <- c("FIPS","polyname","region","subregion")
county <- merge(county, county.fips, by=c("region", "subregion"), all=T)
county <- county[,1:7]
county <- as.data.table(county)
county <- na.omit(county)
setkey(county, order)
county[region=="washington" & subregion=="san juan", FIPS := 53055]
county[region=="washington" & subregion=="pierce", FIPS := 53053]
county[region=="florida" & subregion=="okaloosa", FIPS := 12091]
county[region=="louisiana" & subregion=="st martin", FIPS := 22099]
county[region=="north carolina" & subregion=="currituck", FIPS := 37053]
county[region=="texas" & subregion=="galveston", FIPS := 48167]
county[region=="virginia" & subregion=="accomack", FIPS := 51001]
:私はこのような1 data.tableにまとめmaps
パッケージcounty
とcounty.fips
データ、(FIPSデータを統合するのはおそらくない最もエレガントな方法)を使用しています対応するFIPS列と異なるデータセットを使用して、それぞれの郡を記入してください。 geom_map
、特にmap_id
引数を使用すると問題が発生します。
次のコードは、私がmap_id=FIPS
ggplot() +
geom_map(data=county, map=county,
aes(x=long, y=lat, map_id=FIPS))
でそれを実行すると、エラーError in unit(x, default.units) : 'x' and 'units' must have length > 0
しかし、map_id=region
でそれを実行して約2〜3のうちのあるmap_id=subregion
リターンマップとそれを実行して法線マップとを返し状態が抜けている。私が見つけた最も近い答えはで、map_id
はregion
またはid
に設定する必要がありますが、FIPS
の列名を変更しても役に立たないことが示唆されました。
誰でもここで何が起こっているのか説明できますか?私の理解はmap_id
が別のものの鍵として必要なだけですdf$column
;私はそれが間違っていますか?理想的には私はこのように、FIPS
カラムを通って、私の第二のデータセットに結び付けることができるようにしたいと思います:
ggplot() +
geom_map(data=county, map=county,
aes(x=long, y=lat, map_id=FIPS)) +
geom_map(data=DT2, map=county,
aes(fill=Revenue, map_id=FIPS))
たぶん、[このブログの記事](https://www.datascienceriot.com/mapping-us-counties-in-r-with-fips/kris/が) 'geom_map' doesnの –