Маркировка полигонов с помощью ggmap - PullRequest
0 голосов
/ 06 сентября 2018

Я думаю, я должен пропустить что-то очень простое здесь.

Я бы хотел применить метки к набору полигонов. В частности, я пытаюсь наклеить ярлыки на несколько избирательных округов Калифорнии.

Я начинаю с того, что получаю базовую карту (socal) и накладываю на нее данные из моего SPDF (конгресса) округа:

socal <- get_map(location = "Riverside, USA", zoom = 8, source = "google", 
                 maptype = "roadmap")

somap <- ggmap(socal) +
  geom_polygon(data = congress, 
               aes(x = long, y = lat, group = group), 
               fill = "#F17521", color = "#1F77B4", alpha = .6)

Пока все хорошо.

Но тогда я бы хотел обозначить каждый многоугольник, поэтому я создаю новую переменную:

congress@data$DistrictLabel <- paste("CD", congress@data$DISTRICT, sep = "")

И когда я пытаюсь добавить это на мою карту ...

somap + geom_text(data = congress, aes(x = long, y = lat, label = DistrictLabel))

Я получаю следующую ошибку:

Ошибка в eval (expr, envir, enclos): объект 'DistrictLabel' не найден

Я знаю Я упускаю из виду нечто очевидное, но не могу понять, что это такое! Любая помощь будет высоко ценится.

Спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

Для меток я обычно сначала выводю центроиды полигонов и строю графики на их основе. Я не думаю, что ggplot2 имеет какой-либо автоматический способ позиционирования текстовых меток на основе полигонов. Я думаю, что вы должны указать это. Должно работать что-то вроде следующего:

library(dplyr)
library(sp)
library(rgeos)
library(ggplot2)

##Add centroid coordinates to your polygon dataset
your_SPDF@data <- cbind(your_SPDF@data,rgeos::gCentroid(your_SPDF,byid = T) %>% coordinates())

ggplot(your_SPDF) +
  geom_polygon(data=your_SPDF,aes(x = long, y = lat, group = group), 
                                fill = "#F17521", color = "#1F77B4", alpha = .6) +
  geom_text(data = your_SPDF@data, aes(x = x, y = y),label = your_SPDF$your_label) 
...