ポリゴン内にテキスト(ラベル)を表示する

ポリゴン内に各ポリゴンの属性を表示したい。 何回か調べているので、メモとして残す。

# using packages
library(ggplot2)
library(kokudosuuchi)
library(sf)
library(sp)
options(stringsAsFactors = F)
# preparation
url <- kokudosuuchi::getKSJURL("N03", prefCode = c(27))
url <- url %>% arrange(desc(year)) %>% .[1, ]
N03 <- kokudosuuchi::getKSJData(url$zipFileUrl)
N03 <- N03[[1]]
proj4string(N03) <- CRS("+init=epsg:4612")
# sp class
plot(N03, axes=T)
text(getSpPPolygonsLabptSlots(N03), labels = as.character(N03$市区町村名), cex=0.4)

f:id:jerrarrdan:20170628234700p:plain

# sf class
N03_sf <- st_as_sf(N03)
N03_sf %>% 
  st_geometry() %>%
  plot()
text(st_coordinates(N03_sf %>% st_centroid), labels=N03$市区町村名, cex = 0.3)

f:id:jerrarrdan:20170628234712p:plain

# using ggplot2
N03_sf %>%
  mutate(lon = st_centroid(.) %>% st_coordinates() %>% .[, 1],
         lat = st_centroid(.) %>% st_coordinates() %>% .[, 2]) %>%
  ggplot() +
  geom_sf(aes(fill = 市区町村名)) +
   ggrepel::geom_text_repel(aes(x=lon, y=lat, label=市区町村名), size=2)

f:id:jerrarrdan:20170629004605p:plain

こちらはstackoverflowにあった回答例からのコピペ。 ggplot2パッケージでもっと簡単にテキストを作図したいが、わからず。