1

我有一张传单地图,其中我使用了 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

4

1 回答 1

3

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

colorNumeric您可以使用中的其他调色板功能或其他调色板功能之一构建调色板leaflet,然后以与 choropleth 相同的方式为圆圈着色。

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

于 2018-04-21T17:09:23.683 回答