r语言 - 将 plotly 的子图函数与共享图例一起使用,让每个组在图例中只出现一次



我有下图:

df1 <- data.frame(col1 = rep(LETTERS[1:3], each = 4), col2 = rnorm(12), col3 = runif(12), col4 = rep(c("Fred", "Bob"), each = 6))
df1_list <- split(df1, df1$col1)
colors <- setNames(c('red', 'blue'), c("Fred", "Bob"))
lapply(df1_list, function (arg1) {
plotly::plot_ly(arg1, x = ~col2, y = ~col3, color = ~col4, colors = colors) %>%
layout(showlegend = T)
}) %>%
subplot()

图例显示每个人的名字两次。有没有一种高效的编程方式可以在图例中只显示一次每个名称?

我建议一个通过ggplot2绕行的解决方案。希望这对你的目的有所帮助。

library(tidyverse)
library(plotly)
df1 <- data.frame(col1 = rep(LETTERS[1:3], each = 4), col2 = rnorm(12), col3 = runif(12), col4 = rep(c("Fred", "Bob"), each = 6))
p <- ggplot(df1, aes(col2, col3)) + geom_point(aes(color = col4)) + facet_wrap("col1")
plotly::ggplotly(p)

最新更新