Я хотел бы построить только внешние границы переменной ethnic
в this data set. Набор данных plot_data
, который вы найдете по этой ссылке, представляет собой укрепленный набор данных из шейп-файла от PRIO GRID для Судана.Участок только внешней границы в ggplot2 map/geom_polygon
Мой текущий код выглядит следующим образом:
plot_data <- load("plot_data.rdata")
ggplot(plot_data,
aes(x= long,
y = lat,
group = id)) +
geom_polygon() +
geom_polygon(data = plot_data %>%
filter(!is.na(ethnic)) %>% # subset data with ethnicity only
as.data.frame(),
aes(color = ethnic)) +
coord_equal()
Это дает мне следующий вывод:
Однако, я хотел бы, чтобы удалить все внутренние линии в области урегулирования указанной этнической группы, и изображать только внешнюю границу района.
У меня не получилось найти решение для this similar problem для работы.
Возможно, мне понадобится объединить ячейки до Укреплять шейп-файл; но, возможно, есть способ после укрепления. Я попытался удалить дубликаты координат, но это не сработало. Любые предложения будут ценны. Благодарю.
Спасибо! Но это не работает для меня; результат, который я получаю, следующий: http://imgur.com/a/DswP0. Я использую dplyr v0.5 и ggplot2 v2.1.0. Может быть, это помогло бы, если бы вы могли немного разобраться в своем процессе мышления за кодом. – Felix
@ Феликс, не уверенный, что сказать. Я бы предложил очистить рабочее пространство и повторить попытку. Я использовал предоставленные вами данные и запускал код через RStudio и R, и я также запускал его на своей рабочей станции и labtops (оба mac) - все отлично работает. Возможно, в вашей среде есть расширение ggplot2 или тема, поэтому проверьте это также. Основная идея проста: вам нужно сопоставить заливку и цвет с эстетикой всего сюжета, а затем просто сопоставить цвет с эстетикой меньшего многоугольника, таким образом вы можете окрасить меньший многоугольник с тем же цветом, что и у большего polygon ... –
... это то, что избавляется от внутренних линий меньшего многоугольника. Затем я добавил размер за пределами эстетики меньшего многоугольника, чтобы увеличить ширину красной линии до ощутимого уровня. –