2013-06-21 7 views
9

私は、米国郡レベルのインタラクティブなchoroplethマップをwww.betydb.orgで見てきました。 Rを使用して同様のマップを再現したいのですが、マップとツールチップが必要です(異なるズームレベルのすべてのタイルやマップを切り替えることはできません)ツールチップを含む郡レベルのデータをプロットするR

マップは現在rubyで作成されています。ポップアップ(左下)はMySQLデータベースを照会します。それを書いたプログラマーは動いてきました。私はRubyに慣れていません。ここで

map

、私はcsvファイルで開始します。データには州名と郡名、州と郡FIPSが含まれます。 Avg_yieldをプロットしたいと思います。

mydata <- read.csv("https://www.betydb.org/miscanthus_county_avg_yield.csv") 
> colnames(mydata) 
[1] "OBJECTID" "Join_Count" "TARGET_FID" "COUNTY_NAME" "STATE_NAME" "STATE_FIPS" 
[7] "CNTY_FIPS" "FIPS"  "Avg_lat"  "Avg_lon"  "Avg_yield" 

私はこの状態レベルの着色を提供

library(googleVis) 
p <- gvisGeoChart(data = mydata, locationvar="STATE_NAME", colorvar = 'Avg_yield', 
        options= list(region="US", displayMode="regions", 
        resolution="provinces")) 
plot(p) 

enter image description here

googleVisパッケージを使用して、状態レベルでプロットすることができます。ここで私の質問は、郡レベル(州レベルではなく)の解像度でカラーやツールチップを使ってこのようなものを得るにはどうすればいいのでしょうか? 、

(地域および解像度下)gvisGeoChartヘルプとGoogle chart documentationが、これは可能ではないかもしれないことを示しますが、ドキュメントが、そうR.

以内に、私の他のオプションが何であるか明確ではないほど広範です郡レベルでツールチップと色分けした地図を取得する方法はありますか?

+0

私は米国の同様のマップに取り組んできました。 Googleのグラフには、Rで使用できるオプションがあります。 'resolution =" metros "' – Kevin

答えて

3

これは2013年からの質問です.パッケージが戻ってきたかどうかはわかりません。今は2017年の終わりであり、あなたの仕事を達成することは可能です。私はあなたのために次のことを残しておきたいと思います。この場合、データセットにいくつかの紛失郡があります。これらの郡は米国のポリゴンデータにありますが、mydataにはありません。だから私はsetdiff()bind_rows()を使ってmydataにこれらの郡を追加しました。リーフレットマップを描くときは、カラーパレットを指定する必要があります。 Avg_yieldは連続変数です。したがって、colorNumeric()を使用します。リーフレットマップの一部を示すスクリーンショットを残します。

library(raster) 
library(leaflet) 
library(tidyverse) 

# Get USA polygon data 
USA <- getData("GADM", country = "usa", level = 2) 

### Get data 
mydata <- read.csv("https://www.betydb.org/miscanthus_county_avg_yield.csv", 
        stringsAsFactors = FALSE) %>% 
      dplyr::select(COUNTY_NAME, Avg_yield) 

### Check counties that exist in USA, but not in mydata 
### Create a dummy data frame and bind it with mydata 

mydata <- data.frame(COUNTY_NAME = setdiff(USA$NAME_2, mydata$COUNTY_NAME), 
        Avg_yield = NA, 
        stringsAsFactors = FALSE) %>% 
      bind_rows(mydata) 

### Create a color palette 
mypal <- colorNumeric(palette = "viridis", domain = mydata$Avg_yield) 

leaflet() %>% 
addProviderTiles("OpenStreetMap.Mapnik") %>% 
setView(lat = 39.8283, lng = -98.5795, zoom = 4) %>% 
addPolygons(data = USA, stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.3, 
      fillColor = ~mypal(mydata$Avg_yield), 
      popup = paste("Region: ", USA$NAME_2, "<br>", 
          "Avg_yield: ", mydata$Avg_yield, "<br>")) %>% 
addLegend(position = "bottomleft", pal = mypal, values = mydata$Avg_yield, 
      title = "Avg_yield", 
      opacity = 1) 

enter image description here

enter image description here

+0

この地図は北米全体を示しています。あなたはそれをどのように変えますか?アラスカとハワイを含むアメリカのみを表示しますか? – Harish