我最近将R中的SunburstR软件包更新为2.0版本,突然间切片的排序(按大小,下降,顺时针方向)不会像以前那样自动进行。任何R& JS / d3.js专家帮我实现自定义JS 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)
sunburst函数提供了一个sortFunction参数,可以在其中编写自定义JS,如:
sunburst(df,
# create a trivial sort function
sortFunction = htmlwidgets::JS('function(x) {return x;}'))
谢谢!
过去的样子(注意切片的顺序):
答案 0 :(得分:1)
也许这种example按字母顺序排序会有所帮助。
另一个例子,这是我们如何将每个节点从最大到最小排序。
library(sunburstR)
sequence_json <- jsonlite::fromJSON(
system.file("examples/visit-sequences.json",package="sunburstR"),
simplifyDataFrame = FALSE
)
sunburst(
sequence_json,
sortFunction = htmlwidgets::JS(
"
function(a,b) {
// sort by count descending
// unlike the other example using data.name, value is at the top level of the object
return b.value - a.value
}
"
)
)
大多数属性将以.data
开头。
在sortFunction中设置debugger
并使用Chrome和Firefox中的开发人员工具打开小部件可能会很有帮助。