我已经建立了一个网络并创建了igraph和网络对象。我可以使用ggplot绘制对象,然后使用ggplotly导出到plot_ly。
问题是我对图形没有真正的控制权,所以我想知道是否有更好的方法将网络(或Ig图形)导入到图形中以更好地控制布局。
例如,当连接两个节点时,我有一个权重分数,并想添加一个滑块以根据权重分数(介于0和1之间)进行过滤。
我猜想plotly可能是一个不错的选择,它将允许对网络图进行动态过滤。
这是一个可重复的示例。
我创建了如下的双向网络:
library(ggnet)
library(plotly)
library(network)
n <- data.frame(event1 = c(-0.2,0.8,0.4,0),
event2 = c(0.34,-0.17,0.3,0),
event3 = c(0.2,0.1,-0.73,0),
row.names = letters[1:4])
net <- network(n,
matrix.type = "bipartite",
ignore.eval = FALSE,
names.eval = "weights")
col = c("actor" = "grey", "event" = "gold")
set.edge.attribute(net, "color", ifelse(net %e% "weights" > 0, "green", "red"))
g <- ggnet2(net, color = "mode", palette = col, label = TRUE, edge.color = "color",edge.label="weights")
我将绘图转换为ggplot格式:
gp <- ggplotly(g)
htmlwidgets::saveWidget(as_widget(gp), "ggplot.html")
我得到下图。
如何向图形添加滑块,以便可以(动态地)滤除上方或下方的某个值?
例如查看所有边> 0 ???我从图表本身知道如何做,但是它不是动态的。我想使用plotly来查看并使用滑块删除边缘。
谢谢