首页 > 解决方案 > Plotly R 中的颜色和文本注释 - 交互模式

问题描述

问题:以下代码会生成一个图,该图根据颜色对数据进行分组,并在相应的 y 数据点上注释文本。与绘图交互时(在查看器窗格中),仅选择模型a4(通过单击线条)无法正常工作,因为所有其他模型的线条都消失了,但相应的数字不会。任何想法如何解决这一问题?

library(plotly)
library(data.table)
dt <- as.data.table(mpg)

plot_ly(dt[model %in% c("a4", "passat")],
        x = ~year,
        y = ~displ,
        color = ~model,
        colors = "Set1") %>% 
  add_lines() %>% 
  add_text(y = ~displ, 
           text = ~displ,
           textposition = "top right",
           showlegend = FALSE) %>% 
  layout(xaxis = list(title = ""),
         yaxis = list(title = "Anzahl"))

您可以在下面找到描述我的问题的图。一旦我在绘图图中只选择 a4,帕萨特线就会消失,但与这条线相关的数字仍然存在。

目标:如何修改代码,使a4/passat的行不仅消失,而且相关的数字也消失? 在此处输入图像描述

感谢您的建议/意见。

标签: rplotplotlydata-visualizationr-plotly

解决方案


add_text语句具有选项showlegendas FALSE,它有效地隐藏了可能显示/隐藏文本/数字的第二个图例。

一种策略是使用legendgroup将两个图例组合在一起用于线条和文本,同时仍然隐藏文本图例。model在这种情况下,应该分配组。

library(plotly)
library(data.table)

dt <- as.data.table(mpg)

plot_ly(dt[model %in% c("a4", "passat")],
        x = ~year,
        y = ~displ,
        color = ~model,
        colors = "Set1") %>% 
  add_lines(legendgroup = ~model) %>% 
  add_text(y = ~displ, 
           text = ~displ,
           textposition = "top right",
           showlegend = FALSE,
           legendgroup = ~model) %>% 
  layout(xaxis = list(title = ""),
         yaxis = list(title = "Anzahl"))

阴谋

使用图例组进行绘图


推荐阅读