グラフィカルセンスゼロですが、地図を使ったそれっぽいグラフをRで描いてみる

レポート等で、都市単位のデータを使うとき、地図を使ってそれっぽくつかったサンプルの年を表現したいが、グラフィックセンスに自信ないし、地図にペタペタする作業はおっくうな時のためのコード(R言語です)。

今回はggplotとか基本装備を除いては、sf、rnaturalearth、rnaturalearthdataを主に使用。


・で、サンプルコード(ほとんどchat-gpt4に書かせた)

"""
sessionInfo()
R version 4.2.3 (2023-03-15 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10  x64 (build 22000)
"""

#パッケージのインストールとライブラリの読み込み
install.packages("ggplot2")
install.packages("sf")
install.packages("devtools")
devtools::install_github("ropensci/rnaturalearthhires")

library(ggplot2)
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)

#データの取得(今回はサンプルとして中国)
china <- ne_states(country = "China", returnclass = "sf")

#マーキングしたい都市のロケーションを記録 (緯度経度(lon,lat)については、Chat-gptや地図などで検索)
locations <- data.frame(
  name = c("Shanghai", "Beijing", "Shandong", "Guangdong", "Jiangsu", "Henan", "Zhejiang", "Liaoning", "Heilongjiang"),
  lon = c(121.4737, 116.4074, 117.0203, 113.2644, 119.1411, 113.7536, 120.1528, 123.4291, 127.9688),
  lat = c(31.2304, 39.9042, 36.3427, 23.1291, 33.1402, 34.7655, 29.2675, 41.8354, 47.3597)
)

 #可視化 
ggplot() +
  geom_sf(data = china, fill = "lightgray", color = "black") +
  geom_point(data = locations, aes(x = lon, y = lat), color = "red", size = 3) +
  geom_text(data = locations, aes(x = lon, y = lat, label = name), hjust = 0, vjust = 0, size = 3) +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank())


で、完成形がこちら。

マップなどを用いずにかけて、ポインティングなどもすべてコードでできるため、効率的だし、なにせグラフィカルセンスのなさを隠せる(笑)ので、良い。がんがん使っていこう。

【参考,補助】


学生でお金がなく、本を買うお金、面白い人と会うためのお金が必要です。ぜひ、サポートよろしくお願いします。