r - Plotly - 更改下拉菜单会禁用箱线图分组

标签 r plotly

我正在创建一个箱线图,其中包含绘制在 y 轴上的变量的下拉选项。该数据有 4 个“人”,每个观察值都有一个类型 A 或 B。对于每个人 1:4,图表绘制观察值 A 和 B 的条形图(例如: https://plot.ly/r/box-plots/#grouped-box-plots )。

我能够创建它,但是一旦我更改了下拉列表,分组就会变得困惑。下面是示例代码:

library(plotly)

set.seed(123)
x <- rep(1:4, 6)
y1 <- rnorm(24, 5, 2)
y2 <- rnorm(24, 2, 5)
type <- rep(c("A", "A", "B", "B", "B", "B", "A", "A"), 3)

df <- data.frame(x, y1, y2, type)


p <- plot_ly(df, x = ~x) %>%
  add_boxplot(y = ~y1, color = ~type, name = "First") %>%
  add_boxplot(y = ~y2, color = ~type, name = "Second", visible = F) %>%
  layout(
    boxmode = "group",
    title = "On/Off Box Plot",
    xaxis = list(domain = c(0.1, 1)),
    yaxis = list(title = "y"),
    updatemenus = list(

      list(
        y = 0.8,
        buttons = list(
          list(method = "restyle",
               args = list("visible", list(TRUE, FALSE)),
               label = "y1"),

          list(method = "restyle",
               args = list("visible", list(FALSE, TRUE)),
               label = "y2")))
    )
  )

p

下拉列表以 y1 开头,看起来完全符合我的要求,但是更改下拉列表会重新组合数据,并且更改回 y1 不会返回到原始图表。

分组情况如下:更改下拉列表后,y1 将所有类型“A”与 y1y2 分组 绘制在彼此旁边。选项y2执行相同的操作,但使用类型“B”数据。我只想要 A/B 类型的 y1 数据(如原始图表)。

我猜测“boxmode =“group””行在切换过程中丢失了,但我无法让它工作。有谁知道如何根据 type 维护分组?谢谢。

最佳答案

updatemenus 的长度应为 4,因为实际上有 4 个跟踪(一次可见 2 个)。请注意,对于组,每个图例项都有相应的跟踪。不幸的是,R 的自动重复向量掩盖了这一点。

即,updatemenus 的值应该是:

updatemenus = list(
  list(
    y = 0.8,
    buttons = list(
      list(method = "restyle",
           args = list("visible", list(TRUE, TRUE, FALSE, FALSE)),
           label = "y1"),

      list(method = "restyle",
           args = list("visible", list(FALSE, FALSE, TRUE, TRUE)),
           label = "y2")))
)

关于r - Plotly - 更改下拉菜单会禁用箱线图分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48053665/

相关文章:

R FactoMineR : Return cluster membership

r - 如何将表格添加到图表中?

r - 如何从 R 绘图图中获取坐标

r - 使用 plotly rstudio 从数据框创建漏斗图

r - 如何在plotly中为3D绘图的轴标签添加上标或下标?

r - 使用不包含字符串的正则表达式过滤 Shiny 的DT

html - 我可以使用 knitr 将 CSS 样式应用于单个表格单元格吗?

plotly - 是否可以在绘图中执行 "pair plot"?

r 绘制如何通过纬度、经度和 z 获取 3d 表面

r - 无法重现华宇所做的预测