R Shiny - вращающаяся вкладка панели и функция onclick
Я использую networkD3 и блестящий, чтобы визуализировать некоторые данные. У меня есть диагональная сеть, созданная сетью D3. Однако я хочу, чтобы дерево отображалось вертикально. Кажется, что у networkD3 нет возможности вращать diagonalNetworks.
Можно ли повернуть вкладку в блестящем?
Я добавил код ниже. Если возможно, я бы хотел иметь возможность вращать диаграмму, указанную функцией diagonalNetwork(). Если нет, могу ли я повернуть всю вкладку?
Я заметил, что в сети NetworkD3 forcenetwork есть опция onclick. Можно ли реагировать на щелчки узлов одинаково с помощью diagonalNetwork?
Спасибо!
#### Load necessary packages and data ####
library(shiny)
library(networkD3)
data(MisLinks)
data(MisNodes)
hc <- hclust(dist(USArrests), "ave")
URL <- paste0(
"https://cdn.rawgit.com/christophergandrud/networkD3/",
"master/JSONdata//flare.json")
## Convert to list format
Flare <- jsonlite::fromJSON(URL, simplifyDataFrame = FALSE)
#### Server ####
server <- function(input, output) {
output$simple <- renderDiagonalNetwork({
diagonalNetwork(List = Flare, fontSize = 10, opacity = 0.9)
})
output$force <- renderForceNetwork({
forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
Group = "group", opacity = input$opacity)
})
##
#dendroNetwork(hc, height = 600)
#
# dendroNetwork(hc, height = 500, width = 800, fontSize = 10,
# linkColour = "#ccc", nodeColour = "#fff", nodeStroke = "steelblue",
# textColour = "#111", textOpacity = 0.9, textRotate = NULL,
# opacity = 0.9, margins = NULL, linkType = c("elbow", "diagonal"),
# treeOrientation = c("horizontal", "vertical"), zoom = FALSE)
}
#### UI ####
ui <- shinyUI(fluidPage(
titlePanel("Shiny networkD3 "),
sidebarLayout(
sidebarPanel(
sliderInput("opacity", "Opacity (not for Sankey)", 0.6, min = 0.1,
max = 1, step = .1)
),
mainPanel(
tabsetPanel(
tabPanel("Simple Network", diagonalNetworkOutput("simple")),
tabPanel("Force Network", forceNetworkOutput("force"))
)
)
)
))
#### Run ####
shinyApp(ui = ui, server = server)
2 ответа
Добавьте это на свой сервер.R
Примечание: идентификатор вашего div, содержащего сеть simple
,
observe({
runjs("
var rotated = false;
var div = document.getElementById('simple');
deg = rotated ? 0 : 90
div.style.webkitTransform = 'rotate('+deg+'deg)';
div.style.mozTransform = 'rotate('+deg+'deg)';
div.style.msTransform = 'rotate('+deg+'deg)';
div.style.oTransform = 'rotate('+deg+'deg)';
div.style.transform = 'rotate('+deg+'deg)';
rotated = !rotated;
div.style.position = 'absolute';
div.style.width = 1200+'px';
div.style.height = 1200+'px';
")
})
В вашем ui.R вы должны включить useShinyjs()
и не забудьте загрузить пакет shinyjs
, Информация о вращении в JS может быть найдена здесь: Поверните div, используя javascript
В текущей версии Dev networkD3
(v0.4.9000 @ 2017.08.30), есть новый treeNetwork()
функция, которая имеет эту и многие другие новые функции, встроенные (они также складные).
Вы можете установить текущую версию Dev с...
devtools::install_github("christophergandrud/networkD3")
и построить вертикальный (расширяющийся вниз) диагональный график с...
library(networkD3)
library(jsonlite)
URL <- paste0("https://cdn.rawgit.com/christophergandrud/networkD3/",
"master/JSONdata//flare.json")
Flare <- jsonlite::fromJSON(URL, simplifyDataFrame = FALSE)
treeNetwork(Flare, type = "tidy", direction = "down")
Есть еще много ошибок, которые нужно устранить, например, размещение и поворот текстовых меток, поэтому мы будем благодарны за тестирование, заполнение отчетов о проблемах / ошибках и / или запросы на извлечение. https://github.com/christophergandrud/networkD3