簡體   English   中英

自定義離散色標

[英]Custom discrete color scale in plotly

我想自定義的顏色在plotly情節。 對於連續變量和按docs的比例來說,這很好用:

library(plotly)

plot_ly(iris, x = Petal.Length, y = Petal.Width,
             color = Sepal.Length, colors = c("#132B43", "#56B1F7"),
             mode = "markers")

但是,如果我將參數設為顏色離散(字符或因數),則此方法仍然有效,但會發出警告:

> plot_ly(iris, x = Petal.Length, y = Petal.Width,
          color = Sepal.Length>6, colors = c("#132B43", "#56B1F7"),
          mode = "markers")


Warning message:
In RColorBrewer::brewer.pal(N, "Set2") :
  minimal value for n is 3, returning requested palette with 3 different levels

如何正確執行此操作?

這不是一個小問題,而是ColorBrewer(以及相關的RColorBrewer軟件包)的設計功能。 您會注意到,當您將color分配給等於或大於三個級別的因子時,警告會消失,例如

plot_ly(iris, x = Petal.Length, y = Petal.Width,
        color = cut(Sepal.Length, 3), colors = "Set1",
        mode = "markers")

這是因為ColorBrewer的數據類別的最小數量是三個(您可以從http://colorbrewer2.org/看到,在其中不能選擇少於三個類別)。 例如,在?brewer.pal (由plotly引用的函數)中,它具體說

所有順序調色板都可以從3個不同的值到9個不同的值進行變化。

[...]

對於定性調色板,可用的最少不同值始終為3

由於build_plotly() (內部調用函數plotly() )始終調用brewer.pal() (請參見此處的第474行),因此如果不重寫build_plotly()函數而不用更少的調用brewer.pal()來解決此問題是不可能的。超過3個數據類。

同時,要關閉警告,請將繪圖輸出分配給一個對象,然后將print(object)語句包裝在suppressWarnings()如下所示:

plotly_plot <- plot_ly(iris, x = Petal.Length, y = Petal.Width,
      color = Sepal.Length>6, colors = c("#132B43", "#56B1F7"),
      mode = "markers")

suppressWarnings(print(plotly_plot))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM