Ранее я опубликовал вопрос о том, как нанести на карту названия округов с помощью ggplot и найденных карт ЗДЕСЬ .Мой первый подход состоял в том, чтобы взять все координаты широты и долготы для каждой страны, как показано здесь:
К счастью, у Андри было 2 предложения по улучшению центрирования с использованием центра диапазонов, а затемordin_map (){который, кажется, сохраняет правильное соотношение сторон}.Это значительно улучшило центрирование, как показано здесь:
Я думаю, что это выглядит лучше, но все еще есть некоторые проблемы с проблемами перекрытия.Я надеюсь на дальнейшее улучшение центрирования (в той же теме Джастин предложил подход kmeans).Я согласен с поворотом текста, если это необходимо, но я надеюсь, что имена, которые центрированы и повернуты при необходимости (они выходят за границы округа), позволяют лучше отображать названия округов на карте.
Есть идеи?
library(ggplot2); library(maps)
county_df <- map_data('county') #mappings of counties by state
ny <- subset(county_df, region=="new york") #subset just for NYS
ny$county <- ny$subregion
p <- ggplot(ny, aes(long, lat, group=group)) + geom_polygon(colour='black', fill=NA)
#my first approach to centering
cnames <- aggregate(cbind(long, lat) ~ subregion, data=ny, FUN=mean)
ggplot(ny, aes(long, lat)) +
geom_polygon(aes(group=group), colour='black', fill=NA) +
geom_text(data=cnames, aes(long, lat, label = subregion), size=3)
#Andrie's much improved approach to centering
cnames <- aggregate(cbind(long, lat) ~ subregion, data=ny,
FUN=function(x)mean(range(x)))
ggplot(ny, aes(long, lat)) +
geom_polygon(aes(group=group), colour='black', fill=NA) +
geom_text(data=cnames, aes(long, lat, label = subregion), size=3) +
coord_map()