【发布时间】:2012-03-15 13:17:56
【问题描述】:
我早些时候发布了一个关于使用 ggplot 在地图上绘制县名的问题,并找到了 HERE 的地图。我的第一种方法是采用每个县的所有纬度和经度坐标的方法,如下所示:
谢天谢地,Andrie 有 2 条建议来使用范围中心和 coord_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()
【问题讨论】: