我想自定义plotly
图中的颜色。根据{{3}}:
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
我该如何正确地做到这一点?
答案 0 :(得分:5)
这不是一个阴谋问题,而是ColorBrewer(以及相关的RColorBrewer
包)的设计功能。当您将color
分配给等于或超过三个级别的因素时,您会注意到警告消失,例如
plot_ly(iris, x = Petal.Length, y = Petal.Width,
color = cut(Sepal.Length, 3), colors = "Set1",
mode = "markers")
这是因为ColorBrewer的最小数据类数是3(您可以从http://colorbrewer2.org/看到,其中不能选择少于3个类)。例如,在?brewer.pal
(由plotly引用的函数)中,它具体说明了
所有顺序调色板都有3种变体 不同的值,最多9个不同的值。
[...]
对于定性调色板,可用的最小数量的不同值总是3
由于build_plotly()
(函数plotly()
内部调用)始终调用brewer.pal()
(请参阅第474行here),因此无法在不重写{{1函数不能用少于3个数据类调用build_plotly()
。
在此期间,要关闭警告,请将绘图输出分配给对象,并将brewer.pal()
语句包装在print(object)
中,如下所示:
suppressWarnings()