select x、y 和颜色的下拉菜单(绘图)
Dropdown menu to select x, y and color (plotly)
我正在尝试使用 select 可用的 x、y 和颜色变量创建一个绘图图,部分基于 this previous question。 x 和 y 变量 selection 似乎有效,但是当新的 x 和 y 变量被 selected 时,点颜色会丢失。
此外,我尝试使用与 select 点色类似的策略,但不幸的是这似乎不起作用。
另一种选择是在先前链接的问题中使用“设置可见”策略。
示例:
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 完成的。
下面link对此进行了解释:https://github.com/ropensci/plotly/issues/803
可以使用 plotly.js 和 HTML 来完成此功能。必须将 select
元素添加到 HTML 页面,并添加事件侦听器以在更新时调用 Plotly.newPlot()
。
我正在尝试使用 select 可用的 x、y 和颜色变量创建一个绘图图,部分基于 this previous question。 x 和 y 变量 selection 似乎有效,但是当新的 x 和 y 变量被 selected 时,点颜色会丢失。
此外,我尝试使用与 select 点色类似的策略,但不幸的是这似乎不起作用。
另一种选择是在先前链接的问题中使用“设置可见”策略。
示例:
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 完成的。
下面link对此进行了解释:https://github.com/ropensci/plotly/issues/803
可以使用 plotly.js 和 HTML 来完成此功能。必须将 select
元素添加到 HTML 页面,并添加事件侦听器以在更新时调用 Plotly.newPlot()
。