javascript - D3 按名称而不是值对层次结构条进行排序

标签 javascript charts d3.js

我正在构建一个基于 D3 分层栏示例的演示工具: https://github.com/devsar/d3talk/blob/master/hierarchical-bar.html

添加选项以按名称而非值对层次结构进行排序的最佳方法是什么?

最佳答案

默认情况下,分区布局按其关联的数值排序,但您可以通过调用 sort 设置自己的比较器,该比较器需要一个具有两个参数的函数来相互比较。

要按名称对栏进行排序,只需更改这些行

https://github.com/devsar/d3talk/blob/master/hierarchical-bar.html#L48-L49

对此

var hierarchy = d3.layout.partition()
  .value(function(d) { return d.size; })
  .sort(function(a, b){
      return a.name.toLowerCase() > b.name.toLowerCase();
  });

如果要颠倒排序顺序,返回相反的即可

  return a.name.toLowerCase() < b.name.toLowerCase();

编辑:

似乎在扩展查询 栏时,某些名称没有正确排序。更改比较器的返回值会在我这边修复它 (Chrome)

return a.name.toUpperCase().localeCompare(b.name.toUpperCase());

关于javascript - D3 按名称而不是值对层次结构条进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13687211/

相关文章:

d3.js - TopoJSON 属性保存

javascript - 如何在 D3 中添加强制拖动事件并使节点停留在我离开的位置?

javascript - D3实时绘图: slide from right&shift data as data length exceeds limit transition is not working

javascript - 使用 $http 发送 JSON 导致 Angular 发送文本/纯内容类型

javascript - 在我的网站上使用 Node.js 匹配用户

javascript - 我正在尝试设置一个属性不可见的通用元素并在一行 JavaScript 中

javascript - rrdtool 的时间序列图表替代品

javascript - 无法触发事件 $.mobile.changePage

animation - 加载时动画 D3 圆环图

javascript - Google 图表工具提示选项