用子图遍历R Plotly并隐藏除一个以外的所有图例

仙人掌

我需要遍历因子的迭代,并且每个因子都需要在子图中绘制为一个图。我想做的是在第一个迭代栏中隐藏图例,并使用legendgroup将所有图例捆绑在一起。到目前为止,这是我所做的:

library(plotly)
library(dplyr)

mtcars %>%
  mutate(vs = as.factor(vs)) %>%
  group_split(cyl) %>%
  lapply(function(i) {

    #show.legend <- ifelse(i == 1, TRUE, FALSE)

    show.legend <- if(i == 1) {TRUE} else {FALSE}

    plot_ly(
      data = i
      ,x = ~gear
      ,y = ~mpg
      ,color = ~vs
      ,type = "bar"
      ,legendgroup = ~vs
    ) %>%
      layout(
        barmode = "stack"
        ,showlegend = show.legend
      )
  }) %>%
  subplot(
    nrows = NROW(.)
    ,shareX = TRUE
    ,shareY = TRUE
    ,titleX = TRUE
    ,titleY = TRUE
    ,margin = 0.05
  )

但是,这会产生错误并且没有图例:

Warning messages:
1: In if (i == 1) { :
  the condition has length > 1 and only the first element will be used

如果使用show.legend <- ifelse(i == 1, TRUE, FALSE)(上面注释),我会得到多个图例,而不仅仅是一次。

我知道我可以执行以下操作,但是我需要循环执行此操作。

p1 <- plot_ly(blah, showlegend = TRUE)
p2 <- plot_ly(blah, showlegend = FALSE)
P3 <- plot_ly(blah, showlegend = FALSE)

subplot(p1,p2,p3)

我相信我没有正确地调用i迭代。作为另一种选择,我尝试了case_when

show.legend <- case_when(
      i == 1 ~ TRUE
      ,i != 1 ~ FALSE
    )

但是,这会产生与ifelse相同的结果。

伊斯米尔谢尔夫

您的代码中有两个问题:

  1. i不是,1:3而是您当前的小标题是通过lapply进行迭代(请参见seq_along下文)。这就是为什么您收到警告:

如果if(i == 1){:条件的长度> 1,则仅使用第一个元素

  1. showlegend需要有一个参数plot_ly不是layout因为插曲始终处于layout一个它的情节。?subplot及其论点which_layout

在绘图序列的后面找到的布局选项将覆盖在序列的前面找到的选项


我认为这是您追求的目标:

library(plotly)
library(dplyr)

tibble_list <- mtcars %>%
  mutate(vs = as.factor(vs)) %>%
  group_split(cyl)

lapply(seq_along(tibble_list), function(i) {
  show_legend <- if (i == 1) {TRUE} else {FALSE}
  plot_ly(
    data = tibble_list[[i]],
    x = ~ gear,
    y = ~ mpg,
    color = ~ vs,
    type = "bar",
    legendgroup = ~ vs,
    showlegend = show_legend
  ) %>% layout(barmode = "stack")
}) %>% subplot(
  nrows = NROW(.),
  shareX = TRUE,
  shareY = TRUE,
  titleX = TRUE,
  titleY = TRUE,
  margin = 0.05,
  which_layout = 1
)

结果

在此处找到一个官方示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pyplot中所有子图的一个图例

来自分类Dev

如何遍历字符串并替换除最后一个以外的所有句点?

来自分类Dev

用R中所有行的平均值替换除一个以外的所有列值

来自分类Dev

运行除一个以外的所有Grunt子任务

来自分类Dev

删除除最后一个使用XSLT以外的所有子节点

来自分类Dev

删除除第一个节点以外的所有子节点

来自分类Dev

运行除一个以外的所有Grunt子任务

来自分类Dev

用rm删除除一个以外的所有文件

来自分类Dev

隐藏除第一个孩子以外的所有子div。当我从第一格中选择一个广播选项时,显示第二个

来自分类Dev

高图,在图表加载时关闭了除第一个系列以外的所有图表

来自分类Dev

JavaScript RegEx替换除一个单词以外的所有单词包含子字符串

来自分类Dev

选择除第一个N以外的所有子级-CSS选择器

来自分类Dev

Linux / shell-从一个目录中删除除一个目录以外的所有(子)子文件夹

来自分类Dev

如何分隔一个数组,以便列出除最后一个以外的所有用逗号分隔的元素?

来自分类Dev

是否具有mvndependency:list打印出一个组中除子组中的所有工件以外的所有工件?

来自分类Dev

隐藏除一个以外的所有li项

来自分类Dev

从自身和该列中的所有行中减去该列中的第一行,对于R中除一个以外的所有列

来自分类Dev

获取一个子范围,该子范围具有除第一行中的单元格以外的所有单元格?

来自分类Dev

JS:隐藏除一个之外的所有元素(按 id)(及其所有降序子元素及其父元素)

来自分类Dev

循环遍历除最后一个元素之外的所有元素

来自分类Dev

如何循环遍历列表中除第一个之外的所有项目

来自分类Dev

重定向除一个子域外的所有子域?

来自分类Dev

合并R中具有除一个重复值之外的所有值的行

来自分类Dev

用一个共享图例排列ggsurv图

来自分类Dev

在R循环中创建Plotly显示了所有元素的最后一个图表

来自分类Dev

隐藏除CSS的第一个字母以外的所有文本?

来自分类Dev

jQuery隐藏除第一个以外的所有图像

来自分类Dev

使用纯CSS隐藏除元素的第一个孩子以外的所有孩子

来自分类Dev

HTML CSS隐藏除最后一个元素以外的所有元素

Related 相关文章

  1. 1

    pyplot中所有子图的一个图例

  2. 2

    如何遍历字符串并替换除最后一个以外的所有句点?

  3. 3

    用R中所有行的平均值替换除一个以外的所有列值

  4. 4

    运行除一个以外的所有Grunt子任务

  5. 5

    删除除最后一个使用XSLT以外的所有子节点

  6. 6

    删除除第一个节点以外的所有子节点

  7. 7

    运行除一个以外的所有Grunt子任务

  8. 8

    用rm删除除一个以外的所有文件

  9. 9

    隐藏除第一个孩子以外的所有子div。当我从第一格中选择一个广播选项时,显示第二个

  10. 10

    高图,在图表加载时关闭了除第一个系列以外的所有图表

  11. 11

    JavaScript RegEx替换除一个单词以外的所有单词包含子字符串

  12. 12

    选择除第一个N以外的所有子级-CSS选择器

  13. 13

    Linux / shell-从一个目录中删除除一个目录以外的所有(子)子文件夹

  14. 14

    如何分隔一个数组,以便列出除最后一个以外的所有用逗号分隔的元素?

  15. 15

    是否具有mvndependency:list打印出一个组中除子组中的所有工件以外的所有工件?

  16. 16

    隐藏除一个以外的所有li项

  17. 17

    从自身和该列中的所有行中减去该列中的第一行,对于R中除一个以外的所有列

  18. 18

    获取一个子范围,该子范围具有除第一行中的单元格以外的所有单元格?

  19. 19

    JS:隐藏除一个之外的所有元素(按 id)(及其所有降序子元素及其父元素)

  20. 20

    循环遍历除最后一个元素之外的所有元素

  21. 21

    如何循环遍历列表中除第一个之外的所有项目

  22. 22

    重定向除一个子域外的所有子域?

  23. 23

    合并R中具有除一个重复值之外的所有值的行

  24. 24

    用一个共享图例排列ggsurv图

  25. 25

    在R循环中创建Plotly显示了所有元素的最后一个图表

  26. 26

    隐藏除CSS的第一个字母以外的所有文本?

  27. 27

    jQuery隐藏除第一个以外的所有图像

  28. 28

    使用纯CSS隐藏除元素的第一个孩子以外的所有孩子

  29. 29

    HTML CSS隐藏除最后一个元素以外的所有元素

热门标签

归档