1

是否可以在 googleway 中使用非 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
4

1 回答 1

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
    )

在此处输入图像描述


另一种解决方案是手动将一列十六进制颜色添加到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"
  )
于 2018-09-05T01:52:10.717 回答