R中的Sankey网络:使用Javascript网络D3或GGforce

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

最近,我一直在学习Sankey图,并一直试图在R()中重新创建它们

这是我想象中的问题:我有一张有名字、中间名和姓氏的人的名单。他们有共同的名字,名字重复。我正在尝试制作一个3层(每个名称都是一层)的Sankey图,该图显示了当您转到中间名和姓氏时,名称如何变得更加独特。有很多“约翰”,但只有一个“约翰·克劳德·弗兰克”

以下是我创建的假数据:

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