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

R 传单将标签文本颜色与对象颜色匹配,r,leaflet,R,Leaflet,我希望标签的颜色与多边形的颜色匹配。这里我使用的是静态标签,但我认为这不重要。我发现它可以更改标签文本的颜色,但我希望它与用于多边形的调色板相匹配。以下是我的最佳尝试的一个最小示例: 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

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

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)
                                          )))
图书馆(传单);图书馆(sf)

nc非常老套的解决方案,但它可以工作。我在数据行上循环,并使用
addLabelOnlyMarkers
和行多边形的质心,使用
st_质心
。我在每次迭代中运行
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)
                        )
  )
}
for(1中的i:nrow(nc2)){
text_col=pal(nc2$NAME[i])
p%
addLabelOnlyMarkers(数据=st_质心(nc2[i,]),
label=~NAME,
标签选项=标签选项(
noHide=T,textOnly=T,
样式=列表('color'=文本列)
)
)
}
我仍然欢迎任何更好的解决方案