【问题标题】:Javascript sorting for a SunburstR GraphSunburstR 图的 Javascript 排序
【发布时间】:2023-03-11 21:38:01
【问题描述】:

我最近将我在 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 结果:

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

Sunburst in ealier versions

【问题讨论】:

    标签: javascript r d3.js sunburst-diagram


    【解决方案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 中的开发人员工具打开小部件以查看您正在使用的内容可能会有所帮助。

    【讨论】:

    • 来自创作者本人的哇 :) 非常感谢!我实际上一直在使用看起来很神奇的rend2b,但是当我使用“size”作为参数(这也是默认参数)时,valueField 似乎并没有出现。
    • 更正 - 我现在注意到 valueField 做了其他事情。我缺少的是对 sund2b 中的切片进行排序。
    • sund2b 上排序会有点棘手,但github.com/d2bjs/d2b/issues/17 表明可以做到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    相关资源
    最近更新 更多