R googleway:使用其他调色板

时间:2018-09-05 01:42:02

标签: r googleway

是否可以在Googleway中使用non viridisLite调色板?具体来说,我想要一个单一的色标。这是我的尝试:

library(googleway)
library(RColorBrewer)
googleway::google_map("") %>% 
  googleway::add_polygons(data = melbourne, 
               polyline = "polyline", 
               fill_colour = "SA4_NAME", 
               palette = brewer.pal(9, "Purples")
               )

结果:

Error in checkPalettes.default(arg) : 
  I don't recognise the type of palette you've supplied

1 个答案:

答案 0 :(得分:1)

palette参数需要一个函数,该函数会在给定单个参数作为输入的情况下生成调色板(而不是颜色调色板本身)

您可以使用单个输入将brewer.pal()函数包装到您自己的函数中。

但是,您要面对的麻烦是将brewer.pal的9种颜色映射到12个SA4_NAME变量。 9进12不会走。

如果您的变量具有9个不同的值,这就是它的工作方式。

library(googleway)
library(RColorBrewer)

set_key(read.dcf("~/Documents/.googleAPI", fields = "GOOGLE_MAP_KEY"))

myBrewerPal <- function(x) { brewer.pal(n = x, name = "Purples") }
melbourne$myVal <- sample(1:9, size = nrow(melbourne), replace = T)

googleway::google_map("") %>% 
  googleway::add_polygons(
    data = melbourne
    , polyline = "polyline"
    , fill_colour = "myVal"
    , palette = myBrewerPal
    )

enter image description here


另一种解决方案是手动将一列十六进制颜色添加到melbourne,并将该列指定为fill_colour。然后由您决定将颜色正确映射到所需的变量。

melbourne$myColours <- sample(brewer.pal(n = 9, name = "Purples"), size = nrow(melbourne), replace = T)

googleway::google_map("") %>% 
  googleway::add_polygons(
    data = melbourne
    , polyline = "polyline"
    , fill_colour = "myColours"
  )