用于更改散点图中数据颜色属性的下拉菜单(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)的主要内容,如果未能解决你的问题,请参考以下文章

如何在散点图中自定义标记颜色和形状? [复制]

如何使用R中的绘图功能更改散点图中x轴和y轴标签的字体大小和颜色?

根据值更改散点图中特定点的形状

R绘图基础指南 3. 散点图(合集)

excel绘制散点图时,如何进行分组绘图?

如何在ggplot2中更改散点图的颜色