【问题标题】:Can't set color parameter in addCircleMarkers无法在 addCircleMarkers 中设置颜色参数
【发布时间】:2018-08-31 05:31:22
【问题描述】:

我无法使用传单 addCircleMarkers 函数将数据映射的颜色应用于标记。

铌。我使用colorRampPalette 生成了fn.palette。当映射数据向量x 时,它工作正常,从绿色 > 黄色 > 红色生成颜色的十六进制代码。输出向量colours 看起来像 ("#00FF00FF" "#FFD200FF" "#7FFF00FF" "#FFFF00FF" ...)。

如果我将color 设置为我的十六进制代码向量:

map %>%
    addCircleMarkers(lon, lat, color = colours, radius = 2, weight = 0,
                     fill = TRUE, fillOpacity = 0.5, opacity = 0.6)

它只绘制黑色标记。

如果我使用leaflet::pal 函数:

pal <- colorNumeric(palette = fn.palette, domain = x)
map %>% addCircleMarkers(lon, lat, color = pal(x), radius = radius, 
                         stroke = FALSE, fillOpacity = 1)

它给了

警告信息: 在 seq.int(0, 1, length.out = n) 中: 'length.out' 参数使用的第一个元素

并且只绘制黑色标记。

使用color = ~pal(x) 代替color = pal(x)(如https://rstudio.github.io/leaflet 中的示例)抛出

UseMethod("metaData") 中的错误: 没有适用于“NULL”类对象的“元数据”方法

我的想法已经用完了。

【问题讨论】:

    标签: r leaflet


    【解决方案1】:

    这是在 R 中使用彩色圆圈标记制作传单地图的可重复示例。

    library(leaflet)
    library(viridisLite)
    
    # get domain of numeric data
    (domain <- range(quakes$depth))
    
    # make palette
    pal <- colorNumeric(palette = viridis(100), domain = domain)
    
    # make map
    leaflet(quakes) %>% 
      addTiles() %>% 
      addCircleMarkers(color = ~pal(depth))  
    

    一些提示:

    1) 使用colorNumeric 制作调色板时(假设您有要映射的数字数据)确保domain 参数是可以映射的可能值。

    对于 colorNumeric 和 colorBin,这可以是一个简单的数字范围(例如 c(0, 100))

    这里我先计算了quakes$depth的范围。

    2) 确保在 addCircleMarkers 中使用语法 color = ~pal(depth)

    3) 还要确保~pal() 的参数是您希望调色板映射到的数据中的数值变量。

    【讨论】:

    • 我明白了。 colorNumeric 需要将 palette 参数作为颜色向量——而不是由 colorRampPalette 生成的调色板函数(即使文档中的文档另有暗示)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2014-03-29
    • 1970-01-01
    相关资源
    最近更新 更多