1
我一直在尝试使用plotly
R库创建网络图。我想要想象一个自定义的hoverinfo
文本,其文本标记与为标记(或本例中的节点)定义的文本标记不同。在与“文本”参数不同的标准R表上定制hoverinfo文本?
基本上,我想保留标记(节点)上的文本标签,因为它们是当前的,但也能够为hoverinfo
提供自定义文本。 正如我希望工具提示显示与标记的标签文本不同的其他字符矢量。例如,当我徘徊在中央的“宫本茂”节点时,我想用工具提示来展示我可能收集的其他信息(例如类型,国籍等)。我从剧情介绍中了解到,目前你只能为标记和hoverinfo工具提示显示相同的文本标签。
有没有办法做到这一点?
这是我使用的代码:
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
它更容易帮助你,如果你包括[最小,可重复的例子(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r - 可重复使用的示例),包含示例输入数据和您当前使用的代码。 – MrFlick
感谢您的建议@MrFlick,我添加了代码。 –
当你说:为hoverinfo提供自定义文本 – MLavoie