我正在使用R,并试图重新创建这样的图片:
我做了一些研究,发现R中的"ggforce“库(https://ggforce.data-imaginist.com/reference/geom_parallel_sets.html)允许用户制作类似的情节(使用”名“、”中间名“和”姓“的情节-这些情节表明”名字“确实很常见,”名和中间名“不太常见,而”名字、中间名和姓“则不那么常见):
library(ggforce)
library(reshape2)
name_data <- data.frame(
"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( id = value, 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'))
但这将返回以下错误:
Error in FUN(X[[i]], ...) : object 'x' not found
有人能告诉我我做错了什么吗?
谢谢
发布于 2021-07-09 00:26:24
ggplot函数中的第一个参数是x轴变量.在您提供的示例中,是x=survived
(可能是在示例前面设置的)。您需要指定一个x轴变量,在这种情况下可能是x=City
?即尝试:
ggplot(name_data, aes(x=City, id=ID, ...
编辑: OK,看起来您首先需要有一个不同名称组合的计数(这个值列在泰坦尼克数据示例中已经存在)。您可以使用aggregate
函数来完成这一任务:
name_counts=aggregate(name_data$ID,
by=list(First_Name=name_data$First_Name,
Middle_Name=name_data$Middle_Name,
Last_Name=name_data$Last.Name.),
FUN=length)
names(name_counts)[4] = 'value'
这给出了每个组合的名字,中间和姓氏的计数。此时,运行gather_set_data
函数:
name_counts_gathered = gather_set_data(name_counts, 1:3)
现在,您可以使用ggplot
和geom_parallel_sets
绘制
ggplot(name_counts_gathered) +
geom_parallel_sets(aes(x=x,id=id,split=y,value=value))
gather_set_data
函数按照绘图函数的要求添加id、x和y列。
我不太确定你想要怎样的情节,但希望你现在可以玩绘图标签和选项。
https://stackoverflow.com/questions/68309839
复制相似问题