[英]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.