R中的Sankey网络:使用Javascript网络D3或GGforce
最近,我一直在学习Sankey图,并一直试图在R()中重新创建它们 这是我想象中的问题:我有一张有名字、中间名和姓氏的人的名单。他们有共同的名字,名字重复。我正在尝试制作一个3层(每个名称都是一层)的Sankey图,该图显示了当您转到中间名和姓氏时,名称如何变得更加独特。有很多“约翰”,但只有一个“约翰·克劳德·弗兰克” 以下是我创建的假数据:R中的Sankey网络:使用Javascript网络D3或GGforce,r,ggplot2,sankey-diagram,R,Ggplot2,Sankey Diagram,最近,我一直在学习Sankey图,并一直试图在R()中重新创建它们 这是我想象中的问题:我有一张有名字、中间名和姓氏的人的名单。他们有共同的名字,名字重复。我正在尝试制作一个3层(每个名称都是一层)的Sankey图,该图显示了当您转到中间名和姓氏时,名称如何变得更加独特。有很多“约翰”,但只有一个“约翰·克劳德·弗兰克” 以下是我创建的假数据: library(dplyr) name_data <- data.frame( "City" = c("P
library(dplyr)
name_data <- data.frame(
"City" = c("Paris", "Paris", "Paris", "Paris", "Paris", "London", "London", "London", "Paris", "London", "Paris"),
"First_Name" = c("John", "John", "John", "John", "John", "John", "James", "James", "Adam", "Adam", "Henry"),
"Middle_Name" = c("Claude", "Claude", "Claude", "Smith", "Smith", "Peters", "Stevens", "Stevens", "Ford", "Tom", "Frank"),
"Last Name " = c("Tony", "Tony", "Frank", "Carson", "Phil", "Lewis", "Eric", "David", "Roberts", "Scott", "Xavier")
)
库(dplyr)
命名_数据%#将其分组
总结(Freq=n())#添加频率
我在这里找到了这个网站,我正试图用我的数据重新创建它:
库(ggforce)
图书馆(E2)
名称\u数据
dats_all <- name_data %>% # data
group_by( First_Name, Middle_Name, Last.Name.) %>% # group them
summarise(Freq = n()) # add frequencies
library(ggforce)
library(reshape2)
name_data <- data.frame(
"City" = c("Paris", "Paris", "Paris", "Paris", "Paris", "London", "London", "London", "Paris", "London", "Paris"),
"First_Name" = c("John", "John", "John", "John", "John", "John", "James", "James", "Adam", "Adam", "Henry"),
"Middle_Name" = c("Claude", "Claude", "Claude", "Smith", "Smith", "Peters", "Stevens", "Stevens", "Ford", "Tom", "Frank"),
"Last Name " = c("Tony", "Tony", "Frank", "Carson", "Phil", "Lewis", "Eric", "David", "Roberts", "Scott", "Xavier")
)
name_data$ID <- seq.int(nrow(name_data))
data <- reshape2::melt(name_data)
data <- gather_set_data(name_data)
ggplot(name_data, aes(x, id = ID, split = First_Name, value = value)) +
geom_parallel_sets(aes( alpha = 0.3, axis.width = 0.1) +
geom_parallel_sets_axes(axis.width = 0.1) +
geom_parallel_sets_labels(colour = 'white')