针对SunburstR图表的Javascript排序

时间:2018-05-16 08:00:10

标签: javascript r d3.js sunburst-diagram

我最近将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;}'))

谢谢!

PS结果: Not sorted

过去的样子(注意切片的顺序):

Sunburst in ealier versions

1 个答案:

答案 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开头。

screenshot of json data

screenshot of node data

在sortFunction中设置debugger并使用Chrome和Firefox中的开发人员工具打开小部件可能会很有帮助。