js维度组排序
dc.js dimension group ordering
我正在尝试渲染一个dc.js条形图,其中我的y轴是百分比0-100%,我的x轴是数字,但是我想按日期排序x轴。
我的数据是这样的:
date,trend,percent
01/01/2014 13:00,238,53.6
01/01/2014 13:15,239,64.2
01/01/2014 13:30,219,43.1
01/01/2014 13:45,219.2,43.1
01/01/2014 14:00,237.4,50.6
...
我正在将数据添加到交叉过滤器
data.forEach(function (d) { d.date = parseDate(d.date); });
var ndx = crossfilter(data);
var trendDimension = ndx.dimension(function (d) { return d.trend; });
var trendGroup = trendDimension.group().reduce(
function (p, v) {
p.time = v.date.getTime();
p.trend = +v.trend;
p.percent = +v.percent;
return p;
},
...
).order(function (p) { return p.time; }); // ??? order by time rather than trend
当我绘制维度和组时,我的x轴按趋势排序,因为我的x域看起来像:
var minTrend = trendDimension.bottom(1)[0].trend;
var maxTrend = trendDimension.top(1)[0].trend;
...
chart.x(d3.scale.linear().domain([minTrend, maxTrend]);
...
chart.render();
所有的图表都是按照趋势排序的,我希望它们按照日期/时间排序。
这可能吗?
编辑
我也试过:
chart.ordering(function (d) { return d.value.time; });
您想绘制百分比与趋势的图表还是百分比与时间的图表?
现在你的尺寸是流行的,所以不可能按日期排序。Crossfilter将为每个趋势值(可能有许多日期)创建一个bin,并且您编写reduce函数的方式,它将简单地将bin中的日期条目替换为它看到的最后一个日期。
如果您想按日期排序,然后使用趋势来影响其他一些美学(例如颜色),您应该使用日期维度,按日期的一些量化分组,不要在您的reduce中对日期做任何操作,并使用日期刻度/xUnits。
相关文章:
- Selectize.js:如何对整数值的选项进行排序
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 在d3.js中对x轴上的日期进行排序
- Sencha Ext JS排序标准以字符串而不是JSON的形式发送
- 使用JS或新查询对列表进行排序
- 如何使d3.js树布局按字母顺序对节点进行排序
- 如何在角度js的自动完成下拉列表中对项目列表(按字母顺序)进行排序
- 酒窝 JS 多个 y 轴 - 更改默认排序
- 按类别排序;元素有多个类别(同位素.js)
- 转到其他 URL 后,如何保持排序的骨干.js集合
- 骨干.js具有多种排序的集合
- 如何在节点中进行 Json 对象排序.js
- 可排序.js不起作用:列表项不可拖动
- 嵌套可排序.js toarray 不起作用
- 按特定字母排序JS字符串数组
- 排序JS数组按日期DD/MM/YY格式
- 在HTML页面中排序js文件的最佳方式
- 长XML - 优化排序(js - google adwords)
- 使用时刻和排序插件在数据表中按日期(dd.mm.YYYY)排序.js