r - R : a legend for binary variables 的传单

标签 r leaflet legend

所以我已经成功地在我的传单 map 中添加了一个图例,并且有一个二进制变量的特例。但是,我希望这些二进制变量的图例看起来更好。这个问题嵌入在一个更大的 Shiny 应用程序中,但我将提炼它:

dat <- data.frame("lat"=c(28.8,28.7,28.6,28.5),
                  "lon"=c(77.1,77.2,77.3,77.4),
                  "hiv"=c(0,0,1,1))
colorBy <- "hiv" #just in this example
colorData <- dat[,colorBy]
if(length(unique(colorData)) == 2) pal <- colorBin(c("black","red"), colorData, 2, pretty=F )
else pal <- colorBin(c("red","black"), colorData, 5, pretty=F)

leaflet(dat) %>% 
 addTiles() %>%
  addCircleMarkers(~lon, ~lat, stroke=F,
                   fillOpacity = .6, color = coloring(), radius=radii) %>%
  addLegend("bottomright", pal=pal, values=colorData,
            title=colorBy, opacity=1, layerId="legend")

现在, map 和图例如下所示:Map with binary legend

但是,我真的希望它的颜色旁边有“0”和“1”,而不是“0.0-0.5”和“0.5-1.0”。任何人都知道如何像这样自定义它吗?

最佳答案

使用 colorFactor() 而不是 colorBin()colorFactor 将保持数据的级别,即 01colorBin 将您的数据分成两个 bin,0 - 0.50.5 - 1

library(leaflet)

dat <- data.frame("lat"=c(28.8,28.7,28.6,28.5),
                  "lon"=c(77.1,77.2,77.3,77.4),
                  "hiv"=c(0,0,1,1))
colorBy <- "hiv" #just in this example
colorData <- dat[,colorBy]
if(length(unique(colorData)) == 2){
  pal <- colorFactor(c("black","red"), colorData)
}else{
  pal <- colorFactor(c("red","black"), colorData)
}

leaflet(dat) %>% 
  addTiles() %>%
  addCircleMarkers(~lon, ~lat, stroke=F,
                   fillOpacity = .6, color = "black") %>%
  addLegend("bottomright", pal=pal, values=colorData,
            title=colorBy, opacity=1, layerId="legend")

enter image description here

关于r - R : a legend for binary variables 的传单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31754743/

相关文章:

r - 如何在 `:=` 下的 data.table 中分配动态列名称?

r - R 中不等数量的位置之间的距离(纬度和经度是输入)

r - 根据输入更改传单 map ,无需重绘(多个多边形)

javascript - 重写传单事件

Python 的 matplotlib 图例在带有 gridspec 的单独轴中

octave - 散点图图例和填充在 Octave 中不起作用

r - 修改 lm 包装函数中的权重参数

R 的 try() 无法捕获 file.remove() 产生的错误

angular - 如何使用 ngx-leaflet( Angular 方式)创建矢量图 block map ?

r - 如何在 Leaflet for R 中基于 addLayerControl() 隐藏/切换图例