如何在R语言的Plotly中按组调整标记点的边框颜色?
问题解决:Plotly中标记点边框色与指定颜色不匹配
问题核心:使用Plotly时,试图用colour列指定标记点边框色,但Plotly未直接使用列中的颜色字符串,而是将其当作分类变量重新映射颜色。
原因
marker = list(line = list(color = ~colour))中的公式语法~colour会让Plotly将colour列视为分类变量,自动分配默认调色板中的颜色,而非直接使用列内的颜色字符串值。
解决方案
直接传递颜色向量而非使用公式语法,同时确保填充色的分组映射正确:
library(data.table) library(plotly) dt <- data.table( x = c(1,2,3,4,5), y = c(2,1,3,5,4), x2 = c(6,7,8,9,10), y2 = c(7,6,8,10,9), group = c("A","B","A","B","A"), group2 = c("X","Y","Z","X","Y"), colour = c("red","yellow","green","red","yellow") ) group_colours <- setNames(c("orange","purple"), c("A","B")) plot_ly(dt, x = ~x, y = ~y, type = "scatter", color = ~group, colors = group_colours, mode = "markers", marker = list(size = 15, line = list(color = dt$colour, width = 2)), text = ~paste('</br> Group2:',group2, '</br> Colour:', colour), height = 800) %>% add_markers(x = ~x2, y = ~y2, color = ~group, colors = group_colours, marker = list(size = 15, line = list(color = dt$colour, width = 2)))
关键修改点
- 填充色映射:将
colors = ~group_colours改为colors = group_colours,直接传递命名向量,确保分组与填充色正确对应。 - 边框色设置:将
marker$line$color = ~colour改为marker$line$color = dt$colour,直接使用colour列的颜色字符串,避免Plotly自动映射。 - 新增点的设置:在
add_markers中重复指定color = ~group和colors = group_colours,保证新增点的填充色与第一组保持一致。
内容的提问来源于stack exchange,提问作者isaacm1994
相关产品推荐
相关产品推荐

