R Plotly 如何 link 文本到气泡以便在单击图例时将其删除

R Plotly how to link text to bubbles in order to remove it when click on legend

使用 R 上的 plotly,我有一个气泡散点图,我想在每个气泡上添加黑色文本。我还在我的数据框的一列之后对我的气泡进行了着色(类型:是或否)。在我的图例中,当我单击“是”时,它会删除链接到“是”的气泡,但文本会保留,即使我在两条轨迹中都添加了 'legendgroup=~Type'。

如何在用户单击图例时删除链接到气泡的文本? 这是可能的,但前提是我在文本跟踪中设置 'color = ~Type',但我想将文本保持为黑色。

示例:

df <- data.frame(Projet=c("A", "B", "C"), x=c(0.2, 0.4, 0.6), y=c(0.6, 0.5, 0.1), Size=c(2,5,8), Type=c("Yes", "Yes", "No"))

fig <- plot_ly(df, x = ~ x, y = ~y) %>%
  add_trace(color = ~Type, size = ~Size,
            type = 'scatter', mode = 'markers', 
            sizes = c(20, 80),
            marker = list(symbol = 'circle', sizemode = 'diameter',line = list(width = 2, color = 'gray60')),
            hovertext = ~paste('Projet:', Projet, '<br>Size (kE):', Size),
            hoverinfo="text", legendgroup=~Type) %>%
  add_trace(type="scatter", mode="text", text=~Projet, showlegend=F, legendgroup=~Type)



fig

给出:

如果我点击图例中的“是”:

=> 在这种情况下我想删除“A”和“B”文本

谢谢!

当我查看您的 Plotly 对象时,您为参数 legendgroup 分配了三个组名。它在您的初始调用 add_trace 中起作用的原因是 Plotly 将按颜色拆分轨迹。在您的文本调用中,所有内容都是相同的颜色,因此它不会自动拆分轨迹。

在你对文本的调用中,你需要添加split来分割轨迹。

看看

library(plotly)

df <- data.frame(Project = c("A", "B", "C"), x = c(0.2, 0.4, 0.6),
                 y = c(0.6, 0.5, 0.1), Size = c(2,5,8), 
                 Type = c("Yes", "Yes", "No"))

fig <- plot_ly(df, x = ~ x, y = ~y) %>%
  add_trace(color = ~Type, size = ~Size,
            type = 'scatter', mode = 'markers', 
            sizes = c(20, 80),
            marker = list(symbol = 'circle', sizemode = 'diameter',
                          line = list(width = 2, color = 'gray60')),
            hovertext = ~paste('Project:', Project, '<br>Size (kE):', Size),
            hoverinfo = "text", legendgroup = ~Type) %>%
  add_trace(type = "scatter", mode = "text", text = ~Project, 
            showlegend = F, legendgroup = ~Type, split = ~Type) # <- I'm new!

fig