具有固定节点高度的桑基图

问题描述

我目前正在使用 R 中的 NetworkD3 库处理 Sankey 图。 无论人口如何,我都必须绘制一个具有固定高度的 Sankey。

我尝试使用 value 参数,但能够对第一列节点执行此操作,但对于其他节点列它不起作用。

这是片段。

library(dplyr)
library(tidyr)
library(data.table)
library(networkD3)
library(htmlwidgets)

df <- read.csv( header = TRUE,as.is = TRUE,text = 'name,year1,year2,year3,year4
            Bob,Hilton,Sheraton,Westin,Hyatt
            Bob,Hyatt
            John,Four Seasons,Ritz-Carlton,Sheraton
            Tom,Hyatt
            Mary,Ritz-Carlton
            Sue,Hyatt,Sheraton
            Barb,Four Seasons')

View(df)

links <-
  df %>%
    mutate(row = row_number()) %>%
    gather('column','source',-row) %>%
    mutate(group = source) %>%
    mutate(column = match(column,names(df))) %>%
    group_by(row) %>%
    arrange(column) %>%
    mutate(target = lead(source)) %>%
    ungroup() %>%
    filter(!is.na(target))

View(links)

links <-
  links %>%
    mutate(source = paste0(source,'_',column)) %>%
    mutate(target = paste0(target,column + 1)) %>%
    select(source,target,group)

View(links)

nodes <- data.frame(name = unique(c(links$source,links$target)))

View(nodes)

links$source <- match(links$source,nodes$name) - 1
links$target <- match(links$target,nodes$name) - 1
links$value <- 1

drop(grp)

grp <- data.frame(source=links$source)

View(grp)

grp_2<-
  grp %>% count(source)

View(grp_2)

colnames(grp_2)[which(names(grp_2) == "n")] <- "n_source"
colnames(grp_2)[which(names(grp_2) == "source")] <- "source"

View(grp_2)

links <- merge(x = links,y = grp_2,by = "source",all = TRUE)

links$value <- links$value/links$n_source

View(links)

nodes$name <- sub('_[0-9]+$','',nodes$name)
nodes$group <- nodes$name

View(nodes)
View(links)

sankeyNetwork(sinksRight = FALSE,Links = links,Nodes = nodes,Source = 'source',Target = 'target',Value = 'value',NodeID = 'name',nodePadding = 1,LinkGroup = "group",NodeGroup = "group",fontSize = 8.7)

任何形式的指导或帮助都会大有帮助!提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...