如何在不拆分图例的情况下独立于着色对数据点进行分组?
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)
不幸的是,图例也沿着 split
和 color
拆分:
我只想让它显示图例的颜色部分。在这个例子中,图例只有两个条目。一个用于“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
请查看我的回答 以获得更通用的方法。
我想在 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)
不幸的是,图例也沿着 split
和 color
拆分:
我只想让它显示图例的颜色部分。在这个例子中,图例只有两个条目。一个用于“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
请查看我的回答