【问题标题】:How to manually add symbols with plotly in R如何在R中手动添加符号
【发布时间】:2022-06-13 11:50:00
【问题描述】:

我有一个 plot_ly 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

我想让第一个跟踪使用圆形标记,第二个菱形和第三个三角形,每个都有不同的灰度颜色,但我只是得到彩色圆圈,即

【问题讨论】:

    标签: r r-plotly


    【解决方案1】:

    一种选择是向您的数据框添加一列,然后可以将其映射到 colorsymbol 属性。此外,我使用colorssymbols 的命名向量为新列的类别分配颜色和符号。另请注意,colorssymbols 不应放置在标记规范的 list 内。最后我稍微简化了你的代码。

    "triangle-down" 符号不起作用,仅根据此 reference ( "circle" | "circle-open" | "cross" | "diamond" | "diamond-open" | "square" | "square -open" | "x" ) 被接受。

    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, z = z1)
    z2 <- z + 3
    df2 <- data.frame(x, y, z = z2)
    
    df$color <- "a"
    df1$color <- "b"
    df2$color <- "c"
    symbols <- c("circle", "diamond", 'square')
    colors <- c("gray", "lightgray", "darkslategray")
    names(colors) <- names(symbols)  <- c("a", "b", "c")
    
    plot<- plot_ly(x = ~x, y = ~y, z = ~z, color = ~color, symbol = ~color, colors = colors, symbols = symbols, marker = list(size = 8)) %>%
      add_trace(data = df, type = "scatter3d", mode = 'markers') %>%
      add_trace(data = df1, type = "scatter3d", mode = 'markers') %>%
      add_trace(data = df2, type = "scatter3d", mode = 'markers') %>%
      layout(title = 'Explore Options')
    plot
    

    【讨论】:

    • 谢谢。我接受了你的回答并赞成。奇怪的是,“三角形向下”不起作用。此代码plotly-r.com/working-with-symbols.html 表明它可以正常工作,并且在上述代码中使用triangle-down 时不会出现错误。也许不是所有符号都适用于 3D 绘图?
    • 如果您认为这个问题可能对其他人有用,请点赞。
    • 是的。看来你是对的。根据plotly.com/python/reference/scatter3d/#scatter3d-marker-symbol scatter 3D 只允许有限数量的符号。
    • 太好了,我浪费了很多令人沮丧的时间来尝试获得一个符号。你想编辑你的答案以反映为什么三角形向下不起作用,或者你想让我这样做吗?
    • 我已经编辑了答案。在您有时间看到此评论后,我将删除我的 cmets,因为它们不再需要。
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2013-06-23
    • 2020-03-17
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    相关资源
    最近更新 更多