R Plotly:拆分图例:符号和颜色

Posted

技术标签:

【中文标题】R Plotly:拆分图例:符号和颜色【英文标题】:R Plotly: Split legend: symbols and color 【发布时间】:2019-01-28 14:49:08 【问题描述】:

每个数据点“符号”和“名称”都有一些数据和两个类别。我正在绘制数据并使用不同的符号和颜色映射类别,如下所示。

data <- data.frame(
        x= c(1,2,3,4,5,6,7,8),
        y = c(10,11,10,12,11,9,8,13), 
        symbol = c("invalid", "valid", "invalid",
                   "valid", "valid", "valid","valid", "valid"),
        name = c("A", "B", "B", "A", "A", "A", "B", "B"))


plot_ly(data) %>%
add_markers(y = ~y,  x = ~x,  symbol = ~symbol, color = ~name,
            symbols = c(4, 27),
            mode = 'markers',
            #split = ~name,
            colors = c("red", "navy"))

传说很笨拙。

我想将两个图例条目与十字合并,并为图例中的十字设置中性颜色,如下所示:

我尝试使用split 参数,但没有帮助。

【问题讨论】:

【参考方案1】:

您可以分 3 步完成:

    绘制有效数据 将所有无效数据绘制成灰色并带有图例 用没有图例的颜色覆盖所有无效数据

代码:

data$labels <- data$name
levels(data$labels) <- c("A", "B", "invalid")

plot_ly(data, colors = c("red", "navy", "grey")) %>%
  add_markers(y = ~y,  x = ~x, color = ~labels,
              data = data[data$symbol == "valid",],
              symbols = 4,
              mode = 'markers') %>%
  add_markers(y = ~y,  x = ~x,  symbol = ~symbol, 
              color = factor("invalid", levels = c("A", "B", "invalid")),
              data = data[data$symbol == "invalid",],
              symbols = 27,
              mode = 'markers',
              name = 'invalid',
              legendgroup = factor("invalid", levels = c("A", "B", "invalid"))) %>%
  add_markers(y = ~y,  x = ~x,  symbol = ~symbol, color = ~labels,
              data = data[data$symbol == "invalid",],
              symbols = 27,
              mode = 'markers',
              legendgroup = factor("invalid", levels = c("A", "B", "invalid")),
              showlegend = FALSE)

结果:

【讨论】:

它向我抛出了这个错误:Error in unique.default(x) : unique() applies only to vectors 我也无法用你的代码重现情节。也许 ~labels 应该是 ~name。如果我这样做,我会得到你的情节,但图例显示“无效无效无效”作为十字架的标签。然而这个想法很好。有没有办法让标签点击交互有意义?这样如果点击交叉标签,所有无效数据点都会被隐藏。 对不起,我忘了放变量labels,我已经添加了。谢谢! 使用legendgroup可以删除无效记录,但是当您过滤A或B时,会保留该类别的无效记录,这是我能想到的最接近您需要的解决方案,我希望它对你有用。

以上是关于R Plotly:拆分图例:符号和颜色的主要内容,如果未能解决你的问题,请参考以下文章

绘制散点图图例不显示图例标题,但每种颜色都有 = 符号

如何在 plotly express 条形图中隐藏颜色条和图例?

Plotly:热图颜色图例我的子图

在 Plotly 3.0 中设置图例文本颜色

用于更改散点图中数据颜色属性的下拉菜单(Plotly R)

Plotly:如何更改情节表达图例的背景颜色?