R leaflet为字符变量添加颜色

13

我试图在R中创建一个Leaflet地图,但是从现在开始我想要添加的唯一内容是圆圈的颜色,这些颜色应该根据变量而异。在我的数据中,我有一个名为Data.Type的列,在数据集中大约有5个不同的值。我希望为这些数据点绘制圆圈,并使用5种不同的颜色。

  output$map <- renderLeaflet({
    leaflet() %>%
      addTiles(
        urlTemplate = "//{s}.tiles.mapbox.com/v3/jcheng.map-5ebohr46/{z}/{x}/{y}.png"
      ) %>%
      setView(lng = x, lat = x, zoom = 4)

    leaflet(getData()) %>% addTiles() %>%
      addCircles(lng = ~Longitude, lat = ~Latitude, weight = 1, radius=~Var, popup = ~Var, color=~Data.Type
      )
  })

只有这才会返回灰色的圆圈,而不是五个不同的。应该如何做?

编辑:实际上数据看起来有点像这样,事实上超过了20,000行。

ID    Var    Var    Var   Data.Type
0     99     2016   743    Type A
1     99     2016   209    Type B
2     99     2016   349    Type A
3     99     2016   349    Type D
4     99     2016   993    Type A
5     99     2016   122    Type E
6     99     2016   194    Type B
7     99     2016   660    Type A
8     99     2016   221    Type C
...

这个想法是为Data.Type中的每个变量设置一种颜色,该变量只能具有大约6个不同的值。


你能否在帖子中包含你的数据集? - MLavoie
@MLavoie 当然,我已经编辑了我的帖子并提供了我的数据格式,希望这样更清楚了。 - dnsko
3
这个链接 https://rstudio.github.io/leaflet/colors.html 可以帮助你得到想要的东西。 - MLavoie
1个回答

26

扩展MLavoie的评论,您首先需要定义一个调色板函数。有几种方法可以做到这一点,我下面演示了其中两种,使用完全虚构的数据集。希望它对您的数据也适用。

如果您没有很多因子,并且想手动设置颜色,那么可以确实这样做。这是下面的第一个pal函数。

如果您有许多因素,以至于手动设置颜色不是一个好选项,请尝试使用RColorBrewer调色板。这是下面的第二个pal函数。使用您喜欢的任何一个 - 您不需要同时使用两个pal函数,我只是将它们包含在内作为参考。如果您想查看所有调色板名称选项,请调用RColorBrewer::display.brewer.all()

library('leaflet')

# Fake data
df <- data.frame(lng = c(-5, -10, -15, -20, 25),
                 lat = c(8, 12, 33, 4, 18),
                 size = c(200000, 100000, 800000, 250000, 350000),
                 popup = c('A', 'B', 'C', 'D', 'E'),
                 type = c('A', 'B', 'C', 'D', 'E'),
                 stringsAsFactors = FALSE)

# If you want to set your own colors manually:
pal <- colorFactor(
  palette = c('red', 'blue', 'green', 'purple', 'orange'),
  domain = df$type
)

# If you want to use predefined palettes in the RColorBrewer package:
# Call RColorBrewer::display.brewer.all() to see all possible palettes
pal <- colorFactor(
  palette = 'Dark2',
  domain = df$type
)

leaflet(df) %>%
  addTiles() %>%
  addCircles(lng = ~lng, lat = ~lat, weight = 1, 
             radius = ~size, popup = ~popup, color = ~pal(type))

感谢你的回答,Sam。我瞎折腾了两天,一直没找到解决方法,直到我发现了这个! - Allen Wang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接