用于选择 x、y 和颜色的下拉菜单(绘图) [英] Dropdown menu to select x, y and color (plotly)
问题描述
我正在尝试创建一个带有可选 x、y 和颜色变量的绘图图,部分基于 前一个问题.The x and y variable selection appears to work, however when new x and y variables are selected, the point color is lost.
I am trying to create a plotly graph with selectable x, y and color variables, based in part on this previous question. The x and y variable selection appears to work, however when new x and y variables are selected, the point color is lost.
此外,我尝试使用类似的策略来选择点颜色,但不幸的是这似乎不起作用.
Further, I have tried to use a similar strategy to select the point colour, but unfortunately this does not seem to work.
另一种选择是使用设置可见".之前链接的问题中的策略.
Another option would be to use the "set visible" strategy in the previously linked question.
示例:
library(plotly)
library(pcaMethods)
pca <- pcaMethods::pca(mtcars, nPcs=3)
df <- as.data.frame(pca@scores)
colors1 <- sample(c("red", "green", "blue"), nrow(df), replace=TRUE)
colors2 <- sample(c("red", "green", "blue"), nrow(df), replace=TRUE)
p <- plotly::plot_ly(df, x = ~PC1, y = ~PC2, type = "scatter",
color = sample(c("red", "green", "blue"), nrow(df), replace=TRUE),
mode = "markers")
p <- plotly::layout(
p,
title = "Dropdown PCA plot",
updatemenus = list(
list(
y = 0.7,
buttons = list(
list(method = "restyle",
args = list(
"x", list(df$PC1)
),
label = "PC1"),
list(method = "restyle",
args = list(
"x", list(df$PC2)
),
label = "PC2"),
list(method = "restyle",
args = list(
"x", list(df$PC3)
),
label = "PC3")
)
),
list(
y = 0.5,
buttons = list(
list(method = "restyle",
args = list(
"y", list(df$PC1)
),
label = "PC1"),
list(method = "restyle",
args = list(
"y", list(df$PC2)
),
label = "PC2"),
list(method = "restyle",
args = list(
"y", list(df$PC3)
),
label = "PC3")
)
)
)
)
htmlwidgets::saveWidget(p, "test.html", selfcontained=FALSE)
推荐答案
目前这在 R API 中是不可能的,因为从变量到绘图输出的映射是在 R 端完成的,而不是通过 plotly.js.
This is not currently possible in the R API, as mapping from variables to plot output is done on the R side, not by plotly.js.
以下链接对此进行了解释:https://github.com/ropensci/plotly/issues/803
This is explained at the following link: https://github.com/ropensci/plotly/issues/803
这个功能可以使用 plotly.js 和 HTML 来完成.必须将 select
元素添加到 HTML 页面,并添加事件侦听器以在更新时调用 Plotly.newPlot()
.
This functionality can be accomplished using plotly.js and HTML. One would have to add select
elements to a HTML page, and add event listeners to call Plotly.newPlot()
on update.
An example implementation can be seen here: https://github.com/Alanocallaghan/plotlyutils/blob/master/inst/htmlwidgets/lib/selectable_scatter_plot/selectable_scatter_plot.js
这篇关于用于选择 x、y 和颜色的下拉菜单(绘图)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!