R_maps & leaflet_20240925

Topic(Purpose / Outcome:目的・期待される成果)

Conductor
Conductor

mapsもあるものの恐らくleafletの方が無料のデータソースでinteracticeなデータで良いかも!

Visualization(How / Output:事実整理 / 最終ゴール)

Visualizer
Visualizer

現状、

Script Design / Summary(How:設計図・概要・論理構築)

Wrangler
Wrangler

全体像はこんな感じ

# LIBRARIES ----
library(tidyverse)
library(maps)
library(mapproj)
# 1.0 MAP DATA -----
?map_data()
# 2.0 WORLD MAP ----
# - ggplot is covered in DS4B 101-R Week 4
world_tbl <- map_data("world") %>% # map_data() で地図データを取得 as_tibble() # as_tibble() でデータをtibble型に変換
world_tbl
# * World Base ----
world_base <- world_tbl %>% ggplot() + geom_map( aes(long, lat, map_id = region), # aes() でx軸、y軸、map_idを指定 map = world_tbl, # map_id で地図データを指定 color = "gray80", fill = "gray30", size = 0.3 ) # geom_map() で地図をプロット
world_base
# * Ortho Projection ----
world_base + coord_map("ortho", orientation = c(39, -98, 0)) # coord_map() で地図の投影法を指定、"ortho" は正射投影法を指定。 # orientation で地図の中心を指定している。
# 3.0 STATE MAPS ----
# - ggplot is covered in DS4B 101-R Week 4
usa_tbl <- map_data("state") %>% as_tibble() # state はアメリカ合衆国の州の地図データを取得
usa_tbl %>% ggplot(aes(long, lat, map_id = region)) + geom_map( map = usa_tbl, color = "gray80", fill = "gray30", size = 0.3 ) + coord_map("ortho", orientation = c(39, -98, 0))
# 4.0 REPUBLICAN VOTING BY US STATE ----
# - dplyr is covered in DS4B 101-R Weeks 2 & 3
# - ggplot2 is covered in DS4B 101-R Week 4
# * Wrangle & Join Data (dplyr) ----
republican_voting_tbl <- maps::votes.repub %>% # maps::votes.repub はアメリカ合衆国の州ごとの共和党の投票率データ as_tibble(rownames = "state") %>% # as_tibble() でデータをtibble型に変換 select(state, `1976`) %>% # select() で必要な列を抽出 (state, 1976年の共和党の投票率) rename(repub_prop = `1976`) %>% # rename() で列名を変更 mutate(repub_prop = repub_prop / 100) %>% # mutate() で共和党の投票率を割合に変換 mutate(state = str_to_lower(state)) # mutate() で州名を小文字に変換 # str_to_lower() で文字列を小文字に変換
usa_voting_tbl <- usa_tbl %>% left_join(republican_voting_tbl, by = c("region" = "state")) # left_join() で地図データと共和党の投票率データを結合
usa_voting_tbl
# * Make Map (ggplot2) ----
usa_voting_tbl %>% ggplot(aes(long, lat, group = subregion)) + geom_map( aes(map_id = region), map = usa_tbl, color = "gray80", fill = "gray30", size = 0.3 ) + coord_map("ortho", orientation = c(39, -98, 0)) + geom_polygon(aes(group = group, fill = repub_prop), color = "black") + # geom_polygon() で共和党の投票率をプロット # fill で色を指定 # color で線の色を指定 scale_fill_gradient2(low = "blue", mid = "white", high = "red", midpoint = 0.5, labels = scales::percent) + # scale_fill_gradient2() で色のグラデーションを指定 # low で最小値の色を指定 # mid で中間値の色を指定 # high で最大値の色を指定 theme_minimal() + labs( title = "Voting Republican in 1976", x = "", y = "", fill = "" ) + theme( plot.title = element_text(size = 26, face = "bold", color = "red3"), legend.position = "bottom" )
# 日本の地図をよみこむ
# 必要なパッケージをインストール
install.packages("leaflet")
install.packages("geojsonio")
install.packages("dplyr")
# パッケージを読み込み
library(leaflet)
library(geojsonio)
library(dplyr)
# 日本全体のGeoJSONデータのURL
japan_geojson_url <- "https://raw.githubusercontent.com/dataofjapan/land/master/japan.geojson"
# GeoJSONデータを読み込み
japan_geojson <- geojson_read(japan_geojson_url, what = "sp")
# 東京都のデータのみを抽出
tokyo_geojson <- japan_geojson[japan_geojson$name == "東京都", ]
# 地図に東京都をハイライト
leaflet() %>% setView(lng = 139.6917, lat = 35.6895, zoom = 10) %>% addTiles() %>% addPolygons(data = tokyo_geojson, color = "red", weight = 2, fillOpacity = 0.5)
# 必要なパッケージをインストール
install.packages("leaflet")
install.packages("sf")
install.packages("rnaturalearth")
install.packages("rnaturalearthdata")
# パッケージを読み込み
library(leaflet)
library(sf)
library(dplyr)
library(rnaturalearth)
library(rnaturalearthdata)
# 日本の都道府県データを取得
japan_sf <- ne_states(country = "Japan", returnclass = "sf")
# データの属性名を確認
names(japan_sf)
# 東京都のデータを抽出
tokyo_sf <- japan_sf %>% filter(name == "Tokyo")
# 地図に日本全体を描画
leaflet() %>% addTiles() %>% addPolygons(data = japan_sf, color = "gray", weight = 1, fillOpacity = 0.5) %>% # 東京都を赤色でハイライト addPolygons(data = tokyo_sf, color = "red", weight = 2, fillOpacity = 0.7) %>% # 東京都にズーム setView(lng = 139.6917, lat = 35.6895, zoom = 7)

Raw data / Wrangling / Feature Engineering(抽出~整形)

Raw data(How:生データ抽出元)

  • Source: map_data(“world”)

Raw data(How:生データ抽出方法)

  • SQL読込: –
  • CSV読込: –
  • API読込 : 〇
  • rmarkdown:render()読込:- (.rmdのファイルをtemplate保存しておく必要あり)

Raw data(How:生データの構造 / 種類)

Extractor
Extractor

元々のデータフレーム

Wrangling (How: Loading・生データ読込)

Wrangler
Wrangler

Loading

# Script on Rstudio
# Tips: 読み込み先のファイルは「記載するpath名の始まり」からWorking Directoryとして設定する必要性がある。
map_data("world")

Wrangling (How: before output、Output前のデータ構造)

Wrangler
Wrangler

視える化に合わせて編集

メモ

  • 行 (row) :レコード、Observation、観測値(サンプル数)
  • 列 (column):特徴量、変数、次元数、次元の削減(Dimensionality Reduction): 高次元データを少ない次元に圧縮し、モデルの効率を上げるための手法。.xは列を指定している。obs = number of observatins.
  • 値:data point、Feature
  • Wide format:クロス集計表(横持ちデータ)、Long format:縦持ちデータ
  • 情報ソースがWEBサイト(HTMLやCSS)の場合にはどこから抽出するか、が問われるので、HTMLやCSSの知識が必要(スクレイピングを実施するにせよ)。
  • レンダリング(rendering)とはコンピュータがデータを処理して画像や映像、テキストなどを表示させる技術。
  • .fn(単数)と.fns(複数)はfunctionの略で無名関数。~ (tilde:チルダ) も無名関数。

環境設定

  • 初期設定の3点セット:R, Rstudio, Rtools
  • RのバージョンとRtoolsのバージョンは合わせる必要性がある。Rstudioは最新版でも問題なし。例えば、corrmorantのpackageは、①Rの4.0.0(Rtoolも同バージョンをインストール)、及び、②ggplot2の3.3.0で、問題なくワークする事が実証されている。この場合、最新版のggplotのバージョンではパッケージがワークするかは不明。
# 現状把握
version()
library(pkgbuild)
has_rtools(debug = TRUE)
sessionInfo()

データソースのダウンロード

  • HTML形式のファイルが「file:///C:/Users/XXXXX/・・・」で保存されている場合、ローカルで保存されている状態。HTMLファイルをウェブサーバー(WordPressサイト)にアップロードする必要があり。
  • Githubのcredentialが期限切れになっている場合:
install.packages("oskeyring")
library(gitcreds) # gitcredsパッケージを読み込む
gitcreds_list() # 登録されている認証情報を確認
gitcreds_delete(url = "https://github.com") 
# 登録されている認証情報を削除
Sys.unsetenv("GITHUB_PAT") # GITHUB_PATを削除。空で帰る場合には問題解決。
# 公開リポジトリのインストールには認証は不要:
# corrmorantは公開リポジトリなので、認証なしでインストールできます。
# そのため、環境変数GITHUB_PATやシステムの資格情報ストアに認証情報が設定されていない状態が望ましいです。
# remotes::install_github("r-link/corrmorant", auth_token = NULL, force = TRUE)
# 特定のバージョンのggplot2をインストール
renv::install("ggplot2@3.3.6")

参考リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA