Раньше я разместил вопрос о нанесении названий округов на карту с использованием ggplot и найденных карт ЗДЕСЬ . Мой первый подход заключался в том, чтобы использовать средние значения всех широт и долгих координат для округа, как показано здесь:
К счастью, у Андри было 2 предложения по улучшению центрирования, используя центр диапазонов, а затем функцию corre_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()