[英]R: Visualizing “Linked” Data
我正在使用 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
有人可以告訴我我做錯了什么嗎?
謝謝
ggplot aes 函數中的第一個參數是 x 軸變量。 在您提供的示例中,這是x=survived
(可能在示例的前面設置)。 您需要指定一個 x 軸變量,在這種情況下可能是x=City
? 即嘗試:
ggplot(name_data, aes(x=City, id=ID, ...
編輯:好的,看起來您首先需要對不同名稱組合進行計數(這已經存在於泰坦尼克號數據示例中作為值列)。 您可以使用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
函數根據gather_set_data
函數的要求添加 id、x 和 y 列。
我不完全確定您希望繪圖看起來如何,但希望您現在可以使用繪圖標簽和選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.