用于更改散点图中数据颜色属性的下拉菜单(Plotly R)
Posted
技术标签:
【中文标题】用于更改散点图中数据颜色属性的下拉菜单(Plotly R)【英文标题】:Dropdown menu for changing the color attribute of data in scatter plot (Plotly R) 【发布时间】:2020-11-07 08:27:52 【问题描述】:我正在尝试创建一个带有可选颜色属性的绘图图,以便将选定的分类数据列作为颜色变量传递,它会改变标记的颜色以及我的散点图的图例。
示例如下:
df <- data.frame(x = runif(200), y = runif(200),
z = sample(c("a", "b", "c"), 200, replace=TRUE),
w = sample(c("d", "e", "f",'g'), 200, replace=TRUE))
p <- plot_ly(df, x = ~x)%>%
add_markers(y = ~y, color = ~z,visible=T)%>%
layout(
title = "Drop down menus - color",
xaxis = list(domain = c(0.1, 1)),
yaxis = list(title = "y"),
updatemenus = list(
list(
y = 0.7,
buttons = list(
list(method = "restyle",
args = list("color", list(~z)),
label = "group by z"),
list(method = "restyle",
args = list("color", list(~w)),
label = "group by w")))
))
但是,在两个选项之间切换,情节并没有改变。显然,我们可以使用下拉事件更改任何数据属性,除了颜色!任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:不幸的是,我认为仅使用 plotly
是不可能的:
每个github issue:
color
/symbol
/linetype
/size
/etc 映射(从数据值到颜色代码)发生在事物的 R 端,因此一旦将绘图对象传递给浏览器,它就会丢失有关这些映射的信息,所以恐怕这样的事情是不可能的......除非你自己做映射
替代方案
这似乎是shiny
的一个很好的用例。有一个 stack overflow question 向您展示了在 plotly 之外创建菜单以及使用选择重新渲染绘图的这些步骤。
此外,您可以使用 plotly.js 和 html 更改绘图的颜色。您必须将选择元素添加到 HTML 页面,并添加事件侦听器以在更新时调用 Plotly.newPlot()
。我相信闪亮是一种更简单的解决方案,因为它更像是一种以 R 为中心的方法。
【讨论】:
以上是关于用于更改散点图中数据颜色属性的下拉菜单(Plotly R)的主要内容,如果未能解决你的问题,请参考以下文章