首页 > 解决方案 > 用于更改散点图中数据颜色属性的下拉菜单(Plotly R)

问题描述

我正在尝试创建一个带有可选颜色属性的绘图图,以便将选定的分类数据列作为颜色变量传递,它会改变标记的颜色以及我的散点图的图例。

这是示例:

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")))
    ))

在此处输入图像描述

但是,在两个选项之间切换,情节并没有改变。显然,我们可以使用下拉事件更改任何数据属性,除了颜色!任何帮助,将不胜感激。

标签: rdrop-down-menuplotly

解决方案


不幸的是,我不相信仅使用以下方法是可能的plotly

每个github 问题

color/// symbol/ etc 映射linetypesize从数据值到颜色代码)发生在事物的 R 端,所以一旦绘图对象被传递到浏览器,它就会丢失有关这些映射的信息,所以我担心像这是不可能的……除非你自己做映射

备择方案

这似乎是一个很好的用例shiny。有一个堆栈溢出问题,向您展示了在 plotly 之外创建菜单以及使用选择重新渲染绘图的这些步骤。

此外,您可以使用 plotly.js 和 HTML 更改绘图的颜色。您必须将选择元素添加到 HTML 页面,并添加事件侦听器以调用Plotly.newPlot()更新。我相信闪亮是一个更简单的解决方案,因为它更像是一种以 R 为中心的方法。


推荐阅读