簡體   English   中英

R:可視化“鏈接”數據

[英]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)

現在,您可以使用ggplotgeom_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM