1

我想在多边形地图上创建一个标签文本图层。这是来自以下两个的非常相似的查询:

R ggplot中地图多边形的标签中心

ggplot在地图上居中名称

我的数据框如下,(为了清楚起见,我简化了 long 和 lat - 它们是坐标)

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())

非常感谢

4

1 回答 1

2

安德烈对 ggplot 的回答在地图上以名称为中心

根据 Andrie 在上述链接中的输入,我创建了一个新的向量aggregate()来解决问题 - 尽管使用坐标方法在多边形内居中文本是有争议的。将调查coordinates()@Roman Luš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())
于 2017-02-14T13:22:46.393 回答