如何在传单中的addCircles中使用colorNumeric

时间:2018-04-21 01:05:19

标签: r leaflet r-leaflet

我有一个传单地图,其中我使用了addCircles,它根据我的数据位置的总体大小调整大小。我现在想根据使用colorNumeric的人口收入为这些圈子着色。如何使用填充变量来确定我的圆半径并同时使用收入变量来确定我的颜色?

```{r}
library(leaflet)

leaflet()%>%
addTiles() %>%
addCircles(data = censusdata3, lng = ~Lon, lat = ~Lat, weight = 1, radius = ~households_estimate_total, popup = ~Geography, group = "Population", color) 
```

数据样本:

https://docs.google.com/spreadsheets/d/1Kw2daQk5ur-A3HbdJt7K7krFZ9Uh9Xg726sFRlQXIUM/edit?usp=sharing

1 个答案:

答案 0 :(得分:1)

我基本上只是结合了两个leaflet教程页面中的示例:https://rstudio.github.io/leaflet/colors.htmlhttps://rstudio.github.io/leaflet/shapes.html

您可以使用colorNumericleaflet中的其他调色板功能之一构建调色板,然后按照与等值行为相同的方式为圆圈着色。

csv文件就是从电子表格中下载的内容。

library(tidyverse)
library(leaflet)

censusdata3 <- read_csv("censusdata - ACS_16_5YR_S1901_with_ann.csv") %>%
    setNames(c("Geography", "Lon", "Lat", "total", "median_income", "median_income_moe", "mean_income", "mean_income_moe")) %>%
    mutate_at(vars(total:mean_income_moe), as.numeric)

color_pal <- colorNumeric(palette = "magma", domain = censusdata3$median_income, reverse = F)

leaflet()%>%
    addTiles() %>%
    addCircles(data = censusdata3, 
                         lng = ~Lon, lat = ~Lat, 
                         weight = 1, 
                         radius = ~total, 
                         popup = ~Geography,
                         color = ~color_pal(median_income)
                         ) 

不要编辑,但我也建议按照人口的平方根而不是人口本身来缩放半径,因为人们会察觉到圆圈面积的差异。形状的示例包括使用radius = ~sqrt(Pop) * 30的类似地图。