我很惊讶,我无法用谷歌搜索该解决方案,所以我以为我会发帖。当然其他人也有同样的问题...
我遇到的问题是,当两个或多个散布点重叠时(即相同的x和y),悬停信息仅显示顶部的信息。
示例:
df <- data.frame(ID=1:6, x=c(5:9, 7), y=c(1:5, 3)+10, info=paste('Hover information: ',c(LETTERS[c(1:6)])))
df
plot_ly(df) %>%
add_trace(x = ~x,
y = ~y,
type = 'scatter',
mode = 'markers',
marker = list(color = 1:6,
symbol = 1:6,
size = 25),
hoverinfo = "text",
text = df$info)
是否可以使hoverinfo都出现在中间点?可能是:
Hover information: C
Hover information: F
答案 0 :(得分:1)
您可以尝试使用add_markers()和抖动,例如:
plot_ly(df) %>%
add_markers(x = ~jitter(x, 1),
y = ~jitter(y, 1),
type = 'scatter',
mode = 'markers',
marker = list(color = 1:6,
symbol = 1:6,
size = 25),
hoverinfo = "text",
text = ~info)
但是要获得您设计的多种信息,也许您需要修改数据框(但会丢失颜色代码):
df$info <- as.character(df$info)
df$combined_info[1] <- df$info[1]
for(i in 2:nrow(df)){
df$combined_info[i] <- df$info[i]
for(j in 2:i-1){
if((df$x[j] == df$x[i]) && (df$y[j] == df$y[i])){
df$combined_info[i] <- paste0(df$combined_info[j], "<br>",
df$info[i])
}
}
}
然后您可以使用原始的plotly代码,同时更改“ text”参数:
plot_ly(df) %>%
add_trace(x = ~x,
...
text = ~combined_info)