gpt4 book ai didi

r - 使用子图时在 ggplotly 中控制图例

转载 作者:行者123 更新时间:2023-12-05 05:09:22 24 4
gpt4 key购买 nike

我使用 R plotly 包和函数 ggplotlysubplot 创建一个由多个单独交互的 ggplot2 组成的交互图 plotly 。一些图共享相同的分组变量。

col <- factor(rep(c(1, 2), 5))
fill <- factor(c(rep("a", 5), rep("b", 5)))
x1 <- x2 <- y1 <- y2 <- 1:10
x3 <- y3 <- 11:20
d1 <- dplyr::tibble(x1 = x1, y1 = y1, col = col)
d2 <- dplyr::tibble(x2 = x2, y2 = y2, col = col, fill = fill)
d3 <- dplyr::tibble(x3 = x3, y3 = y3, col = col)

g1 <-
ggplot2::ggplot(d1) +
ggplot2::geom_point(ggplot2::aes(x = x1, y = y1, col = col))

g2 <-
ggplot2::ggplot(d2) +
ggplot2::geom_point(ggplot2::aes(x = x2, y = y2, col = col, fill = fill)) +
ggplot2::scale_fill_manual(values = c("red","green"))

g3 <-
ggplot2::ggplot(d3) +
ggplot2::geom_point(ggplot2::aes(x = x3, y = y3, col = col))

plotly::subplot(plotly::ggplotly(g1), plotly::ggplotly(g2), plotly::ggplotly(g3))

enter image description here

1) 如何删除交互式 plotly 图例中重复的“col”标签?

2) 如何删除“fill”的图例,但保留“col”的图例?


编辑:我知道以下“脏”解决方案,即手动禁用图例:

t <- 
plotly::subplot(plotly::ggplotly(g1), plotly::ggplotly(g2), plotly::ggplotly(g3))

t$x$data[[1]]$showlegend <- FALSE
t$x$data[[2]]$showlegend <- FALSE
t$x$data[[3]]$showlegend <- FALSE
t$x$data[[4]]$showlegend <- FALSE

但是,这需要我提前知道列表元素的位置,这就是为什么我正在寻找更通用的解决方案。

最佳答案

另一种手动删除不需要的图例的方法是使用 style() .在您的示例中,lt <- t %>% style(t, showlegend = FALSE, traces = 3:n) , 其中n<-8之前定义,将抑制不需要的图例。

关于r - 使用子图时在 ggplotly 中控制图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57605127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com