ggplot2で南相馬市の地図を描きたい
こちらでは、南相馬市と、福島第一原子力発電所を地図上にプロットします。
パッケージは、
jpndistrict package | R Documentation
sfとggplot2、geosphereで作図を行います。
#install these packages if needed #install.packages("jpndistrict") #install.packages("sf") #install.packages("geosphere") #install.packages("tidyverse") library(jpndistrict) library(sf) library(geosphere) library(tidyverse)
都道府県・市区町村の情報を取得
地方公共団体コードは以下を参照し、はじめの五桁を使用する。
コードは6桁の数字からなり、上2桁はJIS X 0401に定められた都道府県コード、続く3桁と合わせた上5桁がJIS X 0402に定められた市区町村コード及び一部事務組合等コード、最後の1桁は誤記入・誤入力を防ぐための検査数字(チェックディジット)です。
#Fukushima: Prefectural code 7 FKS <- jpn_pref(pref_code = 7) #これでは宮城県が含まれないので、足し合わせたものを作成する FKS <- c(4,7) %>% map(~jpndistrict::jpn_pref(pref_code = .)) %>% reduce(rbind) %>% st_simplify(dTolerance = 0.001) #Minamisoma (JIS code 07212) Minamisoma <- jpn_cities(jis_code = "07212")
地図に掲載する点を作成する
緯度経度の取得は以下などを参考に。
##Fukushima Daiichi nuclear power plant FDNPP <- data.frame(longitude=c(141.033611), latitude=c(37.421389)) FDNPP_sf <- st_as_sf(FDNPP, coords = c("longitude", "latitude"), crs = 4326, agr = "constant") ##MMGH MMGH <- data.frame(longitude=c(140.9851348), latitude=c(37.6375094)) MMGH_sf <- st_as_sf(MMGH, coords = c("longitude", "latitude"), crs = 4326, agr = "constant")
位置を微調整
gglocatorなどもありますが、 手作業で位置をずらしてみました。
#deciding map range using Miharu Town location mapRange <- c(range(st_coordinates(Minamisoma)[,1]),range(st_coordinates(Minamisoma)[,2])) mapX <- 0.1 mapY <- 0.15 #Main figure FKS %>% ggplot() + geom_sf(color="white") + geom_sf(data=Minamisoma, color="black")+ geom_sf(data = FDNPP_sf, color = "black", pch=13, size=4)+ geom_sf(data = MMGH_sf, color = "black", pch=10, size=4)+ coord_sf(datum = NA, xlim = c(mapRange[c(1)]-4*mapX, mapRange[c(2)]+1.5*mapX), ylim = c(mapRange[c(3)]-1.5*mapY, mapRange[c(4)]+1*mapY)) + theme_bw()+theme(axis.title = element_blank(), axis.text = element_blank()) -> p_fks #p_fksで出力して、coord_sf内の引数を微調整
特定の場所を中心とする円を描く
福島第一原子力発電所からの距離に応じた円を付記する
#Distance from FDNPP FDNPP_equidistant <- map_dfr(c(2.5,5), function(x){ destPoint(FDNPP, -180:180, x*10000) %>% as.tibble() %>% # どの等距離線るかを示すグループ番号 mutate(group = as.character(x)) }) # labels: distance from FDNPP FDNPP_labels <- map_df(c(2.5,5), function(x){ destPoint(FDNPP, 260, x*10000) %>% as.tibble() %>% mutate(distance = paste0(x*10, " km")) })
完成
地図として出力する。
p <- p_fks + # plotting FDNPP 25km and 50km circles geom_path(data = FDNPP_equidistant, aes(x=lon, y = lat, group = group), colour = "black", alpha=0.3, size = 1.5) + # plotting labels: distance from FDNPP geom_label(data = FDNPP_labels, aes(x=lon, y = lat, label = distance), size = 5) + annotate("text", x = as.numeric(FDNPP[1]), y = as.numeric(FDNPP[2])+0.04, label = "FDNPP", size = 5)+ annotate("text", x = as.numeric(MMGH[1])-0.06, y = as.numeric(MMGH[2])+0.04, label = "MMGH", size = 5)+ annotate("text", x = as.numeric(FDNPP[1])-0.10, y= as.numeric(FDNPP[2])+0.36, label = "Minamisoma", size = 5) p+theme_bw(base_family = "HiraKakuProN-W3")+theme(axis.title = element_blank(), axis.text = element_blank()) #saveするときは #ggsave(file = "Figure1_jp.png", plot = p)
もうすぐ野馬追
あたたかくなってきました。もうすぐ野馬追です。
今年はコロナウイルスの影響で無観客なのか。