【问题标题】:R leaflet adding colors for character variablesR传单为字符变量添加颜色
【发布时间】:2017-01-12 04:49:29
【问题描述】:

我正在尝试在 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
      )
  })

只有这只会返回灰色圆圈,而不是 5 个不同的圆圈。这应该怎么做?

编辑:数据看起来有点像这样,实际上超过 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 中的每个 var 设置一个颜色,它只能有大约 6 个不同的值

【问题讨论】:

  • 您可以在帖子中包含您的数据集吗?
  • @MLavoie 当然,我用我的数据格式编辑了上面的帖子,希望它更清楚
  • 这个rstudio.github.io/leaflet/colors.html会帮你得到你想要的

标签: r leaflet


【解决方案1】:

扩展 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))

【讨论】:

  • 感谢您的回答,山姆,花了两天时间胡闹,直到我找到了这个!
猜你喜欢
  • 1970-01-01
  • 2019-01-19
  • 1970-01-01
  • 2021-08-03
  • 2012-12-27
  • 2018-08-14
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
相关资源
最近更新 更多