如何创建由数字变量着色的传单标记

时间:2017-12-25 06:51:23

标签: r maps leaflet

我的数据框包含longitudenumber lat lon number 1 19.59917 -155.42009 3 2 22.21065 -159.47324 120 3 22.21407 -159.59058 7 4 24.54509 -81.70717 49 5 24.54630 -81.81060 1 6 24.55411 -81.80333 11 。我想添加与这些数字对应的颜色标记。数字从1开始,最多可达100或更多。

最理想的情况是,我希望值为< = 1的标记为橙色,< = 10为深橙色,< = 50为红色,> = 50为紫色。

这似乎是一个简单的想法,但我无法弄明白。我试图从leaflet site向下滚动到Awesome Icon部分中的if语句)使用Awesome Icons(虽然我宁愿不),但是该方法实际上对我不起作用,所有标记都是红色的。

override

以上是样本数据。它是闪亮应用程序的一部分。

1 个答案:

答案 0 :(得分:3)

由于没有可重现的数据,我创建了一个样本数据。首先,我获得了加州的多边形数据,并创建了留在加利福尼亚的随机数据点。然后,我添加了0到100之间的随机数。然后,我创建了一个名为group的分组变量,用于在图标中着色。你想要深橙色。但是,看到CRAN手册,makeAwesomeIcon()的颜色不可用。所以我选择了暗红色。然后,我创建了图标并绘制了一张地图。由于没有可重复的数据,我无法看到你手中的东西。但是我希望这个演示让你前进。

library(raster)
library(sp)
library(dplyr)
library(leaflet)

usa <- getData("GADM", country = "usa", level = 1)
cal <- subset(usa, NAME_1 == "California")

foo <- as(cal, "SpatialPolygons")

set.seed(111)
mydata <- spsample(foo, n = 100, "random") %>%
          as.data.frame %>%
          mutate(number = sample.int(n = 100, replace = FALSE),
                 group = cut(number, breaks = c(0, 1, 10, 50, Inf),
                             labels = c("orange", "darkred", "red", "purple"),
                 include.lowest = TRUE)) %>%
          rename(long = x, lat = y)

icons <- awesomeIcons(icon = "whatever",
                      iconColor = "black",
                      library = "ion",
                      markerColor = mydata$group)

leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
addAwesomeMarkers(data = mydata, ~long, ~lat, icon = icons)

enter image description here