我正在尝试在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个不同的值
答案 0 :(得分:10)
扩展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))