菜单或按钮,用于选择在R中按哪个变量样式打印



我想生成一个绘图图,在其中可以单击按钮来选择用于为标记着色的变量。

现在,以下示例生成了一个带有两个按钮的绘图,只是它们不起作用:

df <- data.frame(
x=rnorm(10),
y=rnorm(10))
group1 <- sample(c("A", "B"), 10, replace=TRUE)
group2 <- sample(c("X", "Y"), 10, replace=TRUE)
p <- plot_ly(data=df, type="scatter", mode="markers", x=~ x, y=~ y)
p %>% layout(
updatemenus=list(list(
type="buttons",
y=.8,
buttons=list(
list(method="restyle",
args=list("color", group1),
label="Group 1"),
list(method="restyle",
args=list("color", group2),
label="Group 2")
)
)))

我所能做的可能是添加不同颜色的不同标记,并使用按钮仅切换其可见性。然而,我已经用了这个技巧在同一张图上显示不同的数据集,并用所有不同的选项添加每个数据集会不必要地重复数据。

有没有更简单的解决方案?

我花了一些时间才弄清楚,但我认为您的color参数是错误的。相反,您应该使用marker.color。此外,组变量应该包含颜色(如"红色"或RGB(。。。当我尝试使用具有多种颜色的颜色变量时,只显示其中一种颜色。所以我想我只能在这里给你一些提示。。。也许我以后会有更多的时间进行实验:(

dat <- dplyr::tibble(X=rnorm(10),
Y=rnorm(10))
plotly::plot_ly() %>%
plotly::add_trace(data=dat,
x=~X,
y=~Y,
type="scatter",
mode="markers",
color="yellow") %>%
plotly::layout(
updatemenus=list(
list(
type = "buttons",
y = 0.8,
buttons = list(
list(method = "restyle",
args = list("marker.color","blue"),
label = "Blue"),
list(method = "restyle",
args = list("marker.color","red"),
label = "Red")))))

编辑:我花了一些时间做了更多的实验,认为我找到了一个不那么棘手的解决方案,添加了list的颜色

"%>%" <- magrittr::"%>%"
dat <- dplyr::tibble(X=rnorm(10),
Y=rnorm(10),
COL1=rep(c("1","2"),5),
COL2=c(rep("1",8),rep("2",2)))
plotly::plot_ly() %>%
plotly::add_trace(data=dat,
x=~X,
y=~Y,
type="scatter",
mode="markers") %>%
plotly::layout(
updatemenus=list(
list(
type = "buttons",
y = 0.8,
buttons = list(
list(method = "restyle",
args = list("marker.color",list(~COL1)),
label = "COL1"),
list(method = "restyle",
args = list("marker.color",list(~COL2)),
label = "COL2")))))

最新更新