我想在多边形地图上创建标签文本图层。 这是下面两个非常相似的查询:
Labeling center of map polygons in R ggplot
ggplot centered names on a map
我的数据框如下,(为了清晰起见,我将其简化为长整数 - 它们是坐标)
id long lat order hole piece group locid location
0 long1 lat1 1 false 1 0.1 1 TEXT I WANT
0 long2 lat2 2 false 1 0.1 1 TEXT I WANT
1 long3 lat3 3 false 1 1.1 2 TEXT I WANT2
1 long4 lat4 4 false 1 1.1 2 TEXT I WANT2
这是我当前的代码,它返回一张黑色地图 - 我假设每个长和纬度坐标都有文字。 我正在努力寻找每个多边形的质心,以便我只能按照多边形中心添加文本图层。
testtext <- ggplot() +
geom_polygon(data = df, mapping = aes(x=long, y=lat, group = group, fill=location)) +
geom_text(data = df, mapping = aes(x=long, y=lat, group = group, label=location)) +
geom_path(color = "white") +
scale_fill_hue(l=40) +
coord_equal() +
theme(legend.position = "none", title = element_blank(), axis.text = element_blank())
非常感谢
答案 0 :(得分:2)
Andrie's asnwer on ggplot centered names on a map
根据Andrie在上述链接中的输入,我创建了一个带有aggregate()
的新向量,可以解决这个问题 - 尽管使用坐标在多边形内居中文本是有争议的。将调查coordinates()
@RomanLuštrik
library(ggplot2)
centroid <- aggregate(cbind(long,lat) ~ location, data=df, FUN=mean)
testtext <- ggplot() +
geom_polygon(data = df, mapping = aes(x=long, y=lat, group = group, fill=location)) +
geom_text(data = centroid, mapping = aes(x=long, y=lat, label=location)) +
geom_path(color = "white") +
scale_fill_hue(l=40) +
coord_equal() +
theme(legend.position = "none", title = element_blank(), axis.text = element_blank())