javascript - SunburstR 图的 Javascript 排序
问题描述
我最近将 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;}'))
谢谢!
它过去的样子(注意切片的顺序):
解决方案
也许这个按字母顺序排序的例子会有所帮助。
另一个例子,这里是我们如何从最大到最小对每个节点进行排序。
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中设置 adebugger
并使用 Chrome 和 Firefox 中的开发人员工具打开小部件以查看您正在使用的内容可能会有所帮助。
推荐阅读
- azure - COPY INTO 语句抛出 110806;分布式查询失败
- python - AuthCanceled 在 /oauth/complete/facebook/
- laravel - 使用 Laravel 在同一个索引 Elasticsearch 中保存多个属性
- java - ConcurrentSkipListMap 在descendingMap 中使用自定义比较进入无限循环,这是一个java 错误吗?
- css - 缩放百分比时如何更改文本?
- excel - VBA/Userform - 将值从文本框传输到带有书签的 Word 不起作用
- reactjs - 如何使用 React Hook useState 更新 2 个对象
- c++ - 将参数转发到可变参数模板函数时如何添加参数值?
- flutter - Flutter CustomPainter - 从弧形刮边
- anylogic - 抓住块中动作的含义