2017-05-08 86 views
2

我正在使用networkD3和閃亮顯示某些數據。我有一個由networkD3創建的對角線網絡。不過,我希望樹能夠垂直顯示。 networkD3似乎沒有旋轉對角網絡的選項。R閃亮 - 旋轉tabPanel&onclick功能

我可以旋轉tabPanel閃亮嗎?

我已添加下面的代碼。如果可能,我希望能夠旋轉「diagonalNetwork()」指定的圖表。如果沒有,我可以旋轉整個tabPanel嗎?

我注意到networkD3 forcenetwork有一個onclick選項,是否可以用對角線網絡以同樣的方式響應節點點擊?

謝謝!

#### 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

如果您提供了一個帶有樣本輸入的[可重現示例](http://stackoverflow.com/questions/5963269/how-to-make-a- great-r-reproducible-example),它會更容易幫助您我們可以運行的數據來測試可能的解決方案。 – MrFlick

+0

感謝您的回覆,我現在添加了代碼。 –

+0

我沒有看到forcenetwork的點擊事件。我看到一個鼠標懸停和拖放事件,但我不確定這是什麼意思。無論如何,因爲它與第一個問題沒有太大的關係,我反正會建議做一個新的職位,併爲第二個問題更清楚地描述所需的輸出。關於第一個問題,請參閱下面的答案。 – BigDataScientist

回答

1

添加到您的server.R

注:包含網絡您的div id是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旋轉可以在這裏找到:Rotate a div using javascript

+0

謝謝!這很好,我想我需要學習更多的JavaScript! –

1

networkD3(v0.4.9000 @ 2017年8月30日),目前開發的版本,還有就是有這種和其他許多新功能,新功能treeNetwork()內置的(它們也可以摺疊)。

您可以安裝與...

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") 

有仍然有很多漏洞工作的out,例如文本標籤的放置和旋轉,所以我們希望測試,填寫問題/錯誤報告和/或拉取請求。 https://github.com/christophergandrud/networkD3

+0

是否有更多的treeNetwork文檔? – Bipa

+0

不,現在不是,但我很樂意回答問題(在正確的地方,即不是在另一個問題的評論主題中),我會更樂意從人們那裏獲得幫助已與它合作。 –