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
使用 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