2016-05-30 70 views
3

我有一個data.frame看起來類似於此示例:瞭解sunburstR行爲

> head(dd) 
# paths counts 
#1  s 4735 
#2 dt 4635 
#3 so 2191 
#4 sb 1949 
#5 dt-dt 1310 
#6 s-s 978 

其中一個路徑的不同步驟由-分開。正如你所看到的,一些路徑長度爲1,有些路徑大於1步(在這個例子中最多5步)。

現在我想使用sunburstR包將數據可視化爲sunburst圖。我這樣做:

# devtools::install_github("timelyportfolio/sunburstR") 
library(sunburstR) 
sunburst(dd) 

不幸的是,這不會產生任何輸出,我不明白爲什麼。再舉一個例子,這個按預期工作:

sunburst(tail(dd, 8)) 

但這並不:

sunburst(tail(dd, 9)) 

我也注意到,

sunburst(dd[c(5, 1:4),]) 

產生一個情節,但出人意料的是,dt類別被分成兩塊,通常應該在第一層(最內層)顯示爲一個塊。

問:有人能向我解釋爲什麼會發生這種情況(有些方法是可行的,有些則沒有,有些工作,但一定程度上顯示了不正確的數據),我需要做的,可視化的整個數據集的內容(更而不僅僅是樣本數據)?

樣本數據

dd <- structure(list(paths = c("s", "dt", "so", "sb", "dt-dt", "s-s", 
"so-dt", "dt-dt-dt", "sb-sb", "so-so", "s-s-s", "s-rd", "dt-dt-dt-dt", 
"s-sb", "a", "so-dt-dt", "s-rd-rd", "r", "dt-s", "so-sb", "dt-sb", 
"s-rd-rd-rd", "dt-rd", "dt-dt-dt-dt-dt", "so-dt-dt-dt"), counts = c(4735L, 
4635L, 2191L, 1949L, 1310L, 978L, 558L, 455L, 324L, 281L, 266L, 
231L, 208L, 200L, 200L, 196L, 156L, 150L, 142L, 129L, 123L, 114L, 
113L, 113L, 100L)), .Names = c("paths", "counts"), class = "data.frame", row.names = c(NA, -25L)) 
+0

也許是因爲嗆了一倍(子)序列的?例如。 's-rd-rd'是's-rd-rd-rd'的一部分。 – lukeA

+0

@lukeA,謝謝,這可能是真的。我會盡力調查一下。然而,對我的數據至關重要的是,s-rd-rd和s-rd-rd-rd只有前三個等級,但在第四個等級上是不同的,所以我不能將他們統一成一個類別 –

+0

我認爲軟件包的作者在這種情況下追加了一個'-end'。 – lukeA

回答

5

dd包含的的其他的子序列的序列:

tail(dd, 9) 
#    paths counts 
# 17  s-rd-rd 156 # <----- 
# 18    r 150 
# 19   dt-s 142 
# 20   so-sb 129 
# 21   dt-sb 123 
# 22  s-rd-rd-rd 114 # <----- 
# 23   dt-rd 113 
# 24 dt-dt-dt-dt-dt 113 
# 25 so-dt-dt-dt 100 

例如s-rd-rds-rd-rd-rd的一部分。 sunburst似乎對此窒息。 在package author's example中,您會注意到另有一個 -end以防止此類情況。這也在tips here提到:

每行應該從根到葉的完整路徑 - 不包括中間步驟 計數。例如,包括「家庭搜索結束」 和「家庭搜索產品結束」而不是「家庭搜索」 - 後者是 通過分區佈局計算,將所有 序列的計數相加與該前綴。

這似乎在這裏做的伎倆,太:

transform(tail(dd, 9), paths=paste0(paths, "-end")) 
#     paths counts 
# 17  s-rd-rd-end 156 
# 18    r-end 150 
# 19   dt-s-end 142 
# 20   so-sb-end 129 
# 21   dt-sb-end 123 
# 22  s-rd-rd-rd-end 114 
# 23   dt-rd-end 113 
# 24 dt-dt-dt-dt-dt-end 113 
# 25 so-dt-dt-dt-end 100 

sunburst(transform(tail(dd, 9), paths=paste0(paths, "-end"))) 

enter image description here

+0

感謝盧克,解決了這個問題 –

+2

關於github https://github.com/timelyportfolio/sunburstR/issues/21上非常類似的問題的一些額外討論 – timelyportfolio