R 的传单:二元变量的图例
Leaflet for R: a legend for binary variables
所以我已经成功地在我的传单地图中添加了一个图例,并且有一个二进制变量的特例。但是,我希望这些二进制变量的图例看起来更好。这个问题嵌入在一个更大的 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")
现在,地图和图例如下所示:
但是,我真的希望它的颜色旁边有“0”和“1”,而不是“0.0-0.5”和“0.5-1.0”。有人知道如何像这样自定义它吗?
使用 colorFactor()
而不是 colorBin()
。 colorFactor
将保留数据的级别,即 0
和 1
。 colorBin
将您的数据分成两个容器,0 - 0.5
和 0.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")
所以我已经成功地在我的传单地图中添加了一个图例,并且有一个二进制变量的特例。但是,我希望这些二进制变量的图例看起来更好。这个问题嵌入在一个更大的 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")
现在,地图和图例如下所示:
但是,我真的希望它的颜色旁边有“0”和“1”,而不是“0.0-0.5”和“0.5-1.0”。有人知道如何像这样自定义它吗?
使用 colorFactor()
而不是 colorBin()
。 colorFactor
将保留数据的级别,即 0
和 1
。 colorBin
将您的数据分成两个容器,0 - 0.5
和 0.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")