tal*_*lat 5 plot r sunburst-diagram
我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
Run Code Online (Sandbox Code Playgroud)
其中路径中的不同步骤被分隔开-.如您所见,某些路径长度为1,有些路径> 1步(示例中最多5步).
现在我想sunburst使用sunburstR包将数据可视化为绘图.我是这样做的:
# devtools::install_github("timelyportfolio/sunburstR")
library(sunburstR)
sunburst(dd)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不会产生任何输出,我不明白为什么.另一个例子,这可以按预期工作:
sunburst(tail(dd, 8))
Run Code Online (Sandbox Code Playgroud)
但这不是:
sunburst(tail(dd, 9))
Run Code Online (Sandbox Code Playgroud)
我也注意到了
sunburst(dd[c(5, 1:4),])
Run Code Online (Sandbox Code Playgroud)
产生一个情节,但令人惊讶的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))
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Eg s-rd-rd是其中的一部分s-rd-rd-rd.sunburst似乎扼杀了这一点.在软件包作者的示例中,您会注意到另外一个
-end可以防止此类情况发生的情况.这里的提示也提到了这一点:
每一行应该是从根到叶的完整路径 - 不包括中间步骤的计数.例如,包括"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")))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |