Я сделал действительно хорошую, но большую диаграмму санки , используя пакет networkd3 в r . Есть 173 узла с 4 уровнями (898) ссылок. хорошо отображается в rstudio . Однако, когда я рендерил его в flexdashboard , я получаю только сжатую диаграмму с очень тонкими связями без узлов. Мой пример кода ниже:
library(networkD3)
library(plyr)
library(tidyverse)
#the link data
sdg_san3 <- TY %>% group_by(Target_Conditions, SDI) %>% add_count(SDI) %>% mutate(value = n * 100)
colnames(sdg_san3) <- c("source", "target", "n", "value")
#the node data
NOD_sdg3 <- data.frame(name = c(as.character(sdg_san3$source), as.character(sdg_san3$target)) %>% unique())
#making the Sankey
sdg_san3$sdsource <- match(sdg_san3$source, NOD_sdg3$name)-1
sdg_san3$sdtarget <- match(sdg_san3$target, NOD_sdg3$name)-1
s3 <- networkD3::sankeyNetwork(Links = sdg_san3, Nodes = NOD_sdg3,
Source = 'sdsource', Target = 'sdtarget',
Value = 'value', NodeID = 'name', units = 'frequency', fontSize = 12, nodeWidth = 45, height = 1500, width = 1200)
s3
В flexdashboard я получаю изображение ниже:
Я изменил код с функциями рендеринга, как показано ниже:
output$sankey1 <- renderSankeyNetwork({
sdg_san3 <- TY %>% group_by(Target_Conditions, SDI) %>% add_count(SDI) %>% mutate(value = n * 100)
colnames(sdg_san3) <- c("source", "target", "n", "value")
#the node data
NOD_sdg3 <- data.frame(name = c(as.character(sdg_san3$source), as.character(sdg_san3$target)) %>% unique())
#making the Sankey
sdg_san3$sdsource <- match(sdg_san3$source, NOD_sdg3$name)-1
sdg_san3$sdtarget <- match(sdg_san3$target, NOD_sdg3$name)-1
networkD3::sankeyNetwork(Links = sdg_san3, Nodes = NOD_sdg3,
Source = 'sdsource', Target = 'sdtarget',
Value = 'value', NodeID = 'name', units = 'frequency', fontSize = 12, nodeWidth = 45, height = 30000, width = 15000)
})
sankeyNetworkOutput("sankey1")
И я по-прежнему получаю тот же результат, что и изображение выше, только с более широкими промежутками между узлами, которые должны быть. Любая помощь, чтобы правильно оказать в панели инструментов будет оценена. Спасибо