我有一个data.frame,看起来类似于以下示例:

> 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步)。

现在,我想使用sunburst包将数据可视化为sunburstR图。我这样做是这样的:

# 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))

最佳答案

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中也提到了这一点:


每行应该是从根到叶的完整路径-不包括
计入中间步骤。例如,包括“ home-search-end”
和“ home-search-product-end”,而不是“ home-search”-后者是
由分区布局计算得出,方法是将所有
具有该前缀的序列。


这似乎也可以解决问题:

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")))


r - 了解森伯斯特行为-LMLPHP

07-24 09:52
查看更多