在绘图R图表上的自定义hoverinfo文本是否不同于'text'参数? [英] Custom hoverinfo text on plotly R chart that is different to the 'text' parameter?
问题描述
我一直在尝试使用plotly
R库创建网络图.我想可视化一个自定义的hoverinfo
文本,该文本与为标记(在这种情况下为节点)定义的文本标签不同.
I have been trying to create a network graph with the plotly
R library. I would like to visualize a custom hoverinfo
text that is different from the text label defined for the markers (or nodes in this case).
基本上,我想将文本标签保留在标记(节点)上,但仍要为hoverinfo
提供自定义文本.
如我所愿,工具提示将显示其他一些与标记的标签文本不同的字符向量.例如,当我将鼠标悬停在宫本茂"的中央节点上时,我希望工具提示显示我可能收集的其他信息(例如,类型,国籍等).从可打印的文档中我了解到,当前您只能为标记和hoverinfo工具提示显示相同的文本标签.
Basically, I would like to keep the text labels on the markers (nodes) as they are currently but also be able to provide custom text for the hoverinfo
.
As in I would like the tooltip to display some other character vector different from the marker's label text. For instance, when I hover on the central 'Shigeru Miyamoto' node, I would like to tooltip to display other information that I may collect (eg. type, nationality etc). My understanding from the plotly documentation is that currently you can only display the same text label for both the markers and the hoverinfo tooltip.
有没有办法做到这一点?
Is there a way to accomplish this?
这是我使用的代码:
library(plotly)
library(igraph)
library(dplyr)
A <- data.frame(A=rep("Shigeru Miyamoto",10))
B <- data.frame(B=c("Ninendo Company Ltd","Super Mario Bros","Mario", "Gamespot","Time Magazine","Wii","DOnkey Kong Jr","Mario Kart","Japan","Mario Party"))
edgelist <- bind_cols(A,B)
graph <- graph_from_data_frame(edgelist)
L <- layout_nicely(graph)
vs <- V(graph)
es <- as.data.frame(get.edgelist(graph))
Ne <- length(es[1]$V1)
Xn <- L[,1]
Yn <- L[,2]
txt <- list(
family = "calibri",
size = 15,
color = "white",
opacity = 1
)
size = c(20,rep(5,length(vs)-1))
network <- plot_ly(type = "scatter", x = Xn, y = Yn, mode = "markers+text",
text = names(vs), hoverinfo = "text",marker=list(size=size,color='5BC0DE'), textfont = txt
)
edge_shapes <- list()
for(i in 1:Ne) {
v0 <- es[i,]$V1
v1 <- es[i,]$V2
edge_shape = list(
type = "line",
line = list(color = "DF691A", width = 1),
x0 = Xn[match(v0,names(vs))],
y0 = Yn[match(v0,names(vs))],
x1 = Xn[match(v1,names(vs))],
y1 = Yn[match(v1,names(vs))],
opacity = 0.3
)
edge_shapes[[i]] <- edge_shape}
network <- layout(
network,
paper_bgcolor="#4e5d6c",
plot_bgcolor="#4e5d6c",
hovermode = "closest",
title = paste("Miyamoto's Relations",sep = ""),
titlefont=list(color="white"),
shapes = edge_shapes,
xaxis = list(title = "", showgrid = FALSE, showticklabels = FALSE, zeroline = FALSE),
yaxis = list(title = "", showgrid = FALSE, showticklabels = FALSE, zeroline = FALSE)
)
network
推荐答案
在进一步研究中,我认为我发现了使用annotations
的潜在解决方案.该想法是隐藏markers
中的文本,而不是使用annotations
作为节点标签.这样,您可以为hoverinfo
工具提示文本包括任何任意字符向量.
Upon further research, I think I found a potential solution by using annotations
.The idea is to hide the text from the markers
and instead use annotations
for the node labels. This way you can include any arbitrary character vector for the hoverinfo
tooltip texts.
hover_text <- rep('Game Designer/Mario Creator',11)
size = c(100,rep(40,length(vs)-1))
network <- plot_ly(type = "scatter", x = Xn, y = Yn, mode = "markers",
text = hover_text, hoverinfo = "text",marker=list(size=size,color='5BC0DE')
)
edge_shapes <- list()
for(i in 1:Ne) {
v0 <- es[i,]$V1
v1 <- es[i,]$V2
edge_shape = list(
type = "line",
line = list(color = "DF691A", width = 1),
x0 = Xn[match(v0,names(vs))],
y0 = Yn[match(v0,names(vs))],
x1 = Xn[match(v1,names(vs))],
y1 = Yn[match(v1,names(vs))],
opacity = 0.3
)
edge_shapes[[i]] <- edge_shape}
network <- layout(
network,
paper_bgcolor="#4e5d6c",
plot_bgcolor="#4e5d6c",
hovermode = "closest",
title = paste("Miyamoto's Relations",sep = ""),
titlefont=list(color="white"),
shapes = edge_shapes,
xaxis = list(title = "", showgrid = FALSE, showticklabels = FALSE, zeroline = FALSE),
yaxis = list(title = "", showgrid = FALSE, showticklabels = FALSE, zeroline = FALSE),
annotations=list(x = Xn,
y = Yn,
text = names(vs),
xref = "x",
yref = "y",
showarrow = F,
font=list(family = "calibri",
size = 15,
color = "white",
opacity = 1))
)
network
这篇关于在绘图R图表上的自定义hoverinfo文本是否不同于'text'参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!