d3.js – crossfilter,d3.brush和nvd3集成

我看了 crossfilter主页

真的很喜欢发生了什么事情但是如果我不需要,我不想手写所有的图形.我已经看过dc.js这是相当不错,并给你建立在跨过滤器集成和过滤.

然而,dc缺少一些我需要的东西,我从nvd3获得.然而,通过nvd3上/上的crossfilter获得任何类型的十字图过滤(根据图形的类型等等),看起来像是很多工作.我没有看到或听到任何类型的这项工作在任何地方,但它似乎是nvd3的一个自然进展.

添加十字图过滤和交叉过滤器到nvd3容易,我只是忽略了一个直截了当的这个?

人们如何实现这一点?

谢谢.

解决方法

DC很好,因为您可以直接将维度和组传递给图形对象本身,并且您不必手动更新对跨过滤器的更改.

如果您想将Crossfilter和NVD3结合在一起,则需要手动更新NVD3域/范围或数据,以了解对跨过滤器维度/组的状态的更改.这基本上是如何查看源代码时,Crossfilter页面示例如何处理它:http://square.github.io/crossfilter/.每当画笔更改时,都会重新绘制和更新图形以反映更改.

获取NVD3图表重绘并反映新数据很容易.你可以更新基准,再次调用barchart …例如.

var svg = d3.select("body").append("svg").style("height","500px");
var barChart = nv.models.multiBarChart();

// Just execute this block each time the chart data changes
// and the chart will update in a nicely animated manner
svg
    .datum(chartData)
    .transition()
    .duration(500)
    .call(barChart);

实际上,如果你想在NVD3图表中内置刷子,那么这个棘手的部分就是这个.这可能会变得棘手,因为您必须保持刷新与NVD3图表同步,因为它们的数据已更改,以便它们正确绘制,但如果您只希望NVD3图表更新正确,基于另一个图表的刷事件或你根本不在乎刷子,根本不应该太难了.画笔上的好教程就是这样:http://bl.ocks.org/mbostock/1667367

即使这样说,NVD3对于暴露几乎所有基本图表组件(刻度,轴等)都非常好,这意味着您可以根据需要访问,添加和更新画笔,然后注册刷子事件,更新交叉过滤器,然后根据需要重新绘制图表.

它也是开放源代码,所以您的其他选项将是fork repo并将刷支持和事件直接添加到源.

就个人而言,我有一个自定义的时间轴图表,当刷新更新时,我使用刷子和火灾事件.在事件中,我然后更新NVD3堆叠条形图的数据并重绘.因此,当您更改时间轴过滤器时,条形图动画和更新.看到它在行动是非常光滑的.

无论如何,听起来像一个有趣的挑战.祝你好运!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)