我正在创建一个箱线图,其中包含绘制在 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”与 y1
和 y2 分组
绘制在彼此旁边。选项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/