如何解决具有固定节点高度的桑基图
我目前正在使用 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 举报,一经查实,本站将立刻删除。