R语言plotly 3D散点图如何为不同轨迹手动设置标记符号与颜色
问题描述
我使用plot_ly绘制包含三条轨迹(trace)的3D散点图,希望为每条轨迹设置不同的标记符号和灰度颜色:
- 第一条轨迹使用圆形标记
- 第二条使用菱形标记
- 第三条使用倒三角标记
各自匹配不同的灰度色彩。
初始实现代码如下:
library(plotrix) library(plotly) library(processx) x <- c(1, 2, 3, 4) y <- c(2, 4, 6, 8) z <- c(1, 2, 3, 4) df <- data.frame(x, y, z) z1 <- z + 1.5 df1 <- data.frame(x, y, z1) z2 <- z + 3 df2 <- data.frame(x, y, z2) symbols <- c("circle", "diamond", 'triangle-down') colors <- c("gray", "lightgray", "darkslategray") plot<- plot_ly()%>% add_trace(data = df, x = ~x, y = ~y, z = ~z,type = "scatter3d", mode = 'markers', marker = list(size = 8, symbol = 1, symbols = symbols, color = 1, colors = colors)) %>% add_trace(data = df1, x = ~x, y = ~y, z = ~z1,type = "scatter3d", mode = 'markers', marker = list(size = 8, symbol = 2, symbols = symbols, color = 2, colors = colors)) %>% add_trace(data = df2, x = ~x, y = ~y, z = ~z2,type = "scatter3d", mode = 'markers', marker = list(size = 8, symbol = 8, symbols = symbols, color = 3, colors = colors)) %>% layout(title = 'Explore Options') plot
运行上述代码后并未达到预期效果,所有轨迹均仅显示为不同颜色的圆形标记,未实现符号区分,实际效果如下:
问题原因
代码参数逻辑存在两个核心错误:
symbols和colors参数是给映射到数据列的离散变量做样式匹配用的,单条轨迹单独设置固定样式时不需要传入这两个参数,直接给symbol和color传具体样式值即可- 3D散点图的
symbol参数不支持数字索引传值,必须直接传入标记名称字符串,传入数字1/2/8时不会被识别为对应符号,会被默认回退为圆形标记。
修正代码
直接给每条轨迹单独指定固定的标记符号和颜色即可,不需要全局传入symbols/colors映射数组,无关依赖也可以直接移除:
library(plotly) x <- c(1, 2, 3, 4) y <- c(2, 4, 6, 8) z <- c(1, 2, 3, 4) df <- data.frame(x, y, z) z1 <- z + 1.5 df1 <- data.frame(x, y, z1) z2 <- z + 3 df2 <- data.frame(x, y, z2) plot <- plot_ly()%>% add_trace( data = df, x = ~x, y = ~y, z = ~z, type = "scatter3d", mode = 'markers', marker = list(size = 8, symbol = "circle", color = "gray") ) %>% add_trace( data = df1, x = ~x, y = ~y, z = ~z1, type = "scatter3d", mode = 'markers', marker = list(size = 8, symbol = "diamond", color = "lightgray") ) %>% add_trace( data = df2, x = ~x, y = ~y, z = ~z2, type = "scatter3d", mode = 'markers', marker = list(size = 8, symbol = "triangle-down", color = "darkslategray") ) %>% layout(title = 'Explore Options') plot
运行后即可得到三条分别为圆形(灰色)、菱形(浅灰色)、倒三角(深石板灰)的3D散点轨迹,符合预期效果。
内容的提问来源于stack exchange,提问作者Obromios
相关产品推荐
相关产品推荐

