Как убрать замирание при зависании в графе networkD3 в R - PullRequest
0 голосов
/ 02 января 2019

Я искал примеры использования в

Я хотел бы знать, можно ли будет удалить эффект наведения, когда при наведении курсора на определенный узел на графике все остальное исчезает? См. «Взаимодействие с играфой» в https://christophergandrud.github.io/networkD3/.

Я посмотрел документацию к пакету, но, похоже, не было никакой возможности удалить эффект наведения. Благодарю.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Я думаю, что самый простой способ сделать это - отключить функцию наведения мыши ...

library(networkD3)
library(htmlwidgets)

fn <- forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source", 
                   Target = "target", Value = "value", NodeID = "name",
                   Group = "group", opacity = 1)

onRender(fn, "function(el,x) { d3.selectAll('.node').on('mouseover', null); }")
0 голосов
/ 02 января 2019

Вот решение.Требуется отредактировать связанный файл JS.Я не верю, что есть более простой способ обойти это.Вы можете легко создать функцию из приведенного ниже кода.

# Load package
library(networkD3)

# Create a network graph.
src <- c("A", "A", "A", "A",
        "B", "B", "C", "C", "D")
target <- c("B", "C", "D", "J",
            "E", "F", "G", "H", "I")
networkData <- data.frame(src, target)

# Create widget.
widget <- simpleNetwork(networkData)

# Define (temporary) path to where the widget will be saved.
file <- tempfile(pattern = "file", tmpdir = dir <- tempdir(), fileext = ".html")

# Save widget.
htmlwidgets::saveWidget(widget, file = file, selfcontained = FALSE)

# Define path to where js file is we want to edit.
js_path <- paste0(dir, "/", gsub(".*\\\\|\\..*", "", file), "_files/forceNetwork-binding-0.4/forceNetwork.js")

# Read in JS file.
js <- readLines(js_path)

# Edit relevant line so that no transparency occurs on hover.
js <- gsub("var unfocusDivisor = 4;", "var unfocusDivisor = 1;", js)
writeLines(js, con = js_path)

# Open graph
browseURL(paste0("file://", file))
...