我希望标签的颜色与多边形的颜色匹配。在这里,我使用的是静态标签,但我认为这并不重要。我发现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)
)))
例如,我希望文本“ Ashe”为绿色。是否可以访问labelOptions
中的变量名?
谢谢
答案 0 :(得分:1)
非常hacky的解决方案,但是可以。我遍历数据行,并使用addLabelOnlyMarkers
将st_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)
)
)
}
我仍然欢迎对此有任何更好的解决方案...