2016-05-30 9 views
3

Ich habe ein data.frame, die dieses Beispiel ähnelt:Verständnis sunburstR Verhalten

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

wo verschiedene Schritte in einem Pfad durch - getrennt sind. Wie Sie sehen können, sind einige Pfade Länge 1, manche sind> 1 Schritt (im Beispiel bis zu 5 Schritte).

Jetzt möchte ich die Daten als eine sunburst Handlung mit dem sunburstR Paket visualisieren. Ich mache es so:

Leider produziert dies keine Ausgabe und ich verstehe nicht warum. Als ein anderes Beispiel, das funktioniert wie erwartet:

sunburst(tail(dd, 8)) 

aber nicht:

sunburst(tail(dd, 9)) 

auch, dass ich bemerkt

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

eine grafische Darstellung erzeugt, aber überraschend, die dt Kategorie Spuckt in zwei Chunks, wo es normalerweise als einzelner Chunk auf der ersten (innersten) Ebene angezeigt werden soll.

F: Kann mir jemand erklären, warum das passieren würde (einige Ansätze funktionieren, manche nicht und einige arbeiten, aber zeigen die Daten etwas falsch an) und was ich tun muss, um den gesamten Datensatz zu visualisieren (mehr als nur die Beispieldaten)?

Beispieldaten

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

Vielleicht würgt es wegen verdoppelt (Teil-) Sequenzen? Z.B. 's-rd-rd' ist Teil von' s-rd-rd-rd'. – lukeA

+0

@lukeA, danke, das könnte stimmen. Ich werde versuchen, das ein wenig zu untersuchen.Für meine Daten ist es jedoch essentiell, dass "s-rd-rd" und "s-rd-rd-rd" nur die ersten drei Stufen sind, sich aber auf der vierten unterscheiden, so dass ich sie nicht einfach zu einer einzigen Kategorie zusammenfassen kann –

+0

Ich denke, der Paketautor fügt in solchen Fällen ein zusätzliches '-Ende' hinzu. – lukeA

Antwort

5

dd enthält Sequenzen, die Subsequenzen von anderen sind:

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 

Z.B. s-rd-rd ist Teil von s-rd-rd-rd. sunburst scheint daran zu ersticken. In der package author's example werden Sie eine zusätzliche -end zur Vermeidung solcher Fälle bemerken. Dies spiegelt sich auch in den tips here erwähnt:

jede Zeile ein vollständiger Pfad von der Wurzel zu Blatt sein sollte - nicht enthält zählt für Zwischenschritte. Geben Sie beispielsweise "home-search-end" und "home-search-product-end", aber nicht "home-search" ein - letzteres ist , berechnet durch das Partitionslayout, indem die Zählungen aller Sequenzen addiert werden mit diesem Präfix.

Dies scheint der Trick zu tun, auch:

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

Danke Luke, das löst es –

+2

einige zusätzliche Diskussion auf sehr ähnliches Problem hier auf GitHub https://github.com/timeleportfolio/sunburstR/issues/21 – timelyportfolio