visNetwork использует кадры данных для указания имени и идентификатора узла, а также ребер, подключенных к рассматриваемому узлу.Минимальный пример из 20 узлов:
library(shiny)
library(visNetwork)
nodes <- data.frame(id = 1:20, label = 1:20)
edges <- data.frame(from = c(1:20), to = c(2:20,1))
server <- function(input, output, session) {
output$myNetId <- renderVisNetwork({
visNetwork(nodes, edges)
})
}
ui <- fluidPage(
visNetworkOutput("myNetId",
height <- "400px",
width <- "600")
)
shinyApp(ui <- ui, server <- server)
Шаг за шагом, после импорта двух необходимых библиотек мы затем указываем узел data.frame, который может включать переменную метки, если вы хотите, чтобы текст заполнялсярядом с узлом.Мы только что указали 20 узлов, идущих от 1 до 20.
переменная ребер представляет список ребер, где каждая строка в data.frame представляет начальную и конечную точку для одного ребра.Data.frame, который выглядит следующим образом:
data.frame(from = c(1,1), to = c(2,3))
... создаст два ребра от узла № 1 до узла № 2 и № 3.Я настроил его таким образом, чтобы каждый узел подключался к следующему последовательному узлу, например, к кругу.
Сервер - это объект предоставляет великолепное приложение, которое использует myNetId как ссылку на то, как должна работать visNetwork, а visNetworkOutput () функция в пользовательском интерфейсе действует как холст, указывающий, где на экране должна отображаться сеть.Вы можете добавить дополнительные параметры в функцию visNetwork (), используя>%> следующим образом:
visNetwork(nodes, edges) %>%
visPhysics(solver = "barnesHut",
minVelocity = 0.1,
forceAtlas2Based = list(gravitationalConstant = -150)) %>%
visOptions(manipulation = TRUE, highlightNearest = FALSE) %>%
visEdges(arrows = 'to')
Надеюсь, это поможет!