SunburstR 2.0扇形图自动排序失效,求自定义JS排序方案
解决sunburstR 2.0版本扇形图切片自定义排序问题
升级到sunburstR 2.0之后,确实会遇到扇形图切片不再默认按大小降序顺时针排列的问题,不过我们可以通过sortFunction参数传入自定义的JavaScript函数来恢复旧版本的排序逻辑。
核心解决方案
我们需要编写一个JS函数,让每个节点的子元素按照value属性降序排列,这样就能实现旧版本里按大小顺时针排序的效果。具体的函数逻辑是:
function(a, b) { // 按value降序排列,值大的排在前面(对应顺时针方向) return b.value - a.value; }
完整可复现代码
把这个函数通过htmlwidgets::JS()包裹后传入sunburst()的sortFunction参数即可,完整代码如下:
library(jsonlite) library(sunburstR) b <- read.csv( file = paste0( "https://gist.githubusercontent.com/rileycrane/", "92a2c36eb932b4f99e51/raw/", "a0212b4ca8043af47ec82369aa5f023530279aa3/visit-sequences.csv" ), header = FALSE, stringsAsFactors = FALSE ) sequence_json <- jsonlite::fromJSON( system.file("examples/visit-sequences.json", package = "sunburstR"), simplifyDataFrame = FALSE ) # 传入自定义排序函数,恢复旧版本的降序排序逻辑 sunburst( sequence_json, sortFunction = htmlwidgets::JS('function(a, b) {return b.value - a.value;}') )
效果说明
这个自定义排序函数会让每个层级的扇形切片按照数值从大到小顺时针排列,和你提到的旧版本sunburstR的展示效果完全一致。
内容的提问来源于stack exchange,提问作者Centar 15
相关产品推荐
相关产品推荐

