如何在不拆分图例的情况下独立于着色对数据点进行分组?

How to group datapoints independently from coloring in plotly without splitting the legend?

我想在 plotly 中绘制由线连接的多个点。虽然每个 id-group 应该只有一行(如数据集中定义的那样),但这些线的颜色应该取决于数据中的不同列。

考虑这个示例数据:

 df <- data.frame(
   x = c(1,2,3,4,5,6),
   y = c(0,0,3,1,4,5),
   id= c(1,1,2,2,3,3), # defines belonging to line
   group = c("A","A","A","A","B","B") # defines color of the point and line
 )

如果我这样绘制它,它会起作用:

 plot_ly(df,type = "scatter", mode = "lines+markers",
         x = ~x,
         y = ~y,
         split = ~id,
         color = ~group)
 

不幸的是,图例也沿着 splitcolor 拆分:

我只想让它显示图例的颜色部分。在这个例子中,图例只有两个条目。一个用于“A”,一个用于“B”。

有没有我在这里没有看到的简单方法?

附录:一个 id 总是只链接到一个组。没有 id 值在多个不同的 group

之间共享

plotly 的 color 参数将始终根据提供的数据创建跟踪(就像 split,但映射 colors)。

但是,我们可以通过 legendgroup 合并单独的图例项并仅显示其中一项:

library(plotly)

DF <- data.frame(
  x = c(1,2,3,4,5,6),
  y = c(0,0,3,1,4,5),
  id= c(1,1,2,2,3,3), # defines belonging to line
  group = c("A","A","A","A","B","B") # defines color of the point and line
)

fig <- plot_ly(DF, type = "scatter", mode = "lines+markers",
               x = ~x,
               y = ~y,
               split = ~id,
               color = ~group,
               name = ~group,
               legendgroup = ~group) %>%
       layout(showlegend = TRUE) %>%
       style(showlegend = FALSE, traces = 1)

fig

请查看我的回答 以获得更通用的方法。