You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

运行上述代码后并未达到预期效果,所有轨迹均仅显示为不同颜色的圆形标记,未实现符号区分,实际效果如下:
三条轨迹实际渲染效果

问题原因

代码参数逻辑存在两个核心错误:

  1. symbols和colors参数是给映射到数据列的离散变量做样式匹配用的,单条轨迹单独设置固定样式时不需要传入这两个参数,直接给symbol和color传具体样式值即可
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 09:54:29