【问题标题】:geom_text - finding centroids and adding text in a polygon using ggplot2 -geom_text - 使用 ggplot2 查找质心并在多边形中添加文本 -
【发布时间】:2017-02-14 12:17:53
【问题描述】:

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

Labeling center of map polygons in R ggplot

ggplot centered names on a map

我的数据框如下,(为了清楚起见,我简化了 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())

非常感谢

【问题讨论】:

  • 请以reproducible为榜样。
  • 感谢您的链接,将进行编辑 - 话虽如此,添加一些坐标会很复杂,因为我有很多多边形,因此在我的 df 中进行观察。
  • coordinates() 会给你多边形的质心,如果你有一个合适的sp 对象。

标签: r ggplot2 centroid geom-text


【解决方案1】:

Andrie's asnwer on ggplot centered names on a map

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

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    相关资源
    最近更新 更多