传单将标签文本颜色与对象颜色匹配

时间:2019-01-15 23:05:21

标签: r leaflet

我希望标签的颜色与多边形的颜色匹配。在这里,我使用的是静态标签,但我认为这并不重要。我发现this tutorial可以更改标签文本的颜色,但我希望它与用于多边形的调色板匹配。这是我最佳尝试的一个最小示例:

library(leaflet); library(sf)

nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc <- nc %>% st_transform(crs = 4326)
nc2 <- nc[1:3,]

pal <- colorFactor(c('red', 'green', 'blue'), domain = as.character(nc2$NAME))

leaflet(nc2) %>% 
  addPolygons(label = ~NAME,
              color = ~pal(NAME),
              labelOptions = labelOptions(noHide = T, textOnly = T, textsize = 15, 
                                          style = list(
                                            color = ~pal(NAME)
                                          )))

enter image description here

例如,我希望文本“ Ashe”为绿色。是否可以访问labelOptions中的变量名?

谢谢

1 个答案:

答案 0 :(得分:1)

非常hacky的解决方案,但是可以。我遍历数据行,并使用addLabelOnlyMarkersst_centroid与行多边形的质心一起使用。我每次迭代都运行pal函数。

for(i in 1:nrow(nc2)) {
  text_col = pal(nc2$NAME[i])
  p <- p %>% 
    addLabelOnlyMarkers(data = st_centroid(nc2[i,]), 
                        label = ~NAME, 
                        labelOptions = labelOptions(
                            noHide = T, textOnly = T,
                            style = list('color' = text_col)
                        )
  )
}

我仍然欢迎对此有任何更好的解决方案...