我试图创建一个plotly图与可选的x,y和颜色变量,部分基于this previous question。x和y变量选择似乎工作,但当新的x和y变量被选择,点颜色丢失。
此外,我尝试使用类似的策略来选择点颜色,但不幸的是,这似乎不起作用。
另一种选择是在前面链接的问题中使用“设置可见”策略。
示例:
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)
字符串
2条答案
按热度按时间hk8txs481#
这在R API中目前是不可能的,因为从变量到绘图输出的Map是在R端完成的,而不是由plotly.js完成的。
这在以下链接中解释:https://github.com/ropensci/plotly/issues/803
这个功能可以使用plotly.js和HTML来实现。需要在HTML页面中添加
select
元素,并添加事件侦听器来在更新时调用Plotly.newPlot()
。这里可以看到一个示例实现:https://github.com/Alanocallaghan/plotlyutils/blob/master/inst/htmlwidgets/lib/selectable_scatter_plot/selectable_scatter_plot.js
jtoj6r0c2#
我创建了一个基本函数,它使用plotly生成一系列散点图来比较输入框中的列,并为用户添加了一个菜单来选择不同的比较。
函数如下:
字符串
使用上述函数,您可以创建比较图:
型
生成: