替换交叉过滤器数据,恢复维度和组

2024-03-27

我在用着dc.js http://dc-js.github.io渲染数据集的漂亮气泡图。底层的 dc.js 是交叉过滤器 https://github.com/square/crossfilter.

我想使用来自服务器的新数据顺利刷新我的图表。这个问题在Github上 https://github.com/dc-js/dc.js/issues/177明确表示可以通过以下方式做到这一点:

  1. 从交叉过滤器中删除所有数据
  2. 添加新数据
  3. calling dc.redrawAll().

我已经完成了这个工作,但是为了删除所有数据,您首先必须清除所有过滤器(因为crossfilter.remove https://github.com/square/crossfilter/wiki/API-Reference#crossfilter_remove仅删除与当前过滤器匹配的记录)。

我想“记住”之前如何过滤我的数据,以便在替换所有数据后可以再次重建过滤器。我愿意深入人心crossfilter代码,但任何指针都会有帮助。

另外:如果有人知道一种基于唯一密钥更新交叉过滤器数据的方法,那将是金粉!


这就是我最终一起破解的内容。它工作得很好,尽管我确信它的效率低得可笑,因为所有维度都必须从头开始创建:

var _xfilter = crossfilter({x:1, y:2},{x:3, y:4}),
    _dimensions = [];

_dimensions.push(_xfilter.dimension(function(d) { return d.x; });

// Unfilters all the given dimensions, removes all data
// from xf and adds newData to xf.
var _xfilter_reset = function(xf, dimensions, newData) {
    var i;
    for (i = 0; i < dimensions.length; i++) {
        // Clear all filters from this dimension.
        // Necessary because xf.remove only removes records
        // matching the current filter.
        dimensions[i].filter(null);
    }
    xf.remove(); // Remove all data from the crossfilter
    xf.add(newData);
    return xf;
}

// Resets the global crossfilter object and reapplies all
// current dc.js chart filters.
var _refresh_data = function(data) {
    var i, j,
        chart, oldFilters,
        allCharts = dc.chartRegistry.list();

    _xfilter = _xfilter_reset(_xfilter, _dimensions, data);     

    // Reset all filters using dc.js
    for (i = 0; i < allCharts.length; i++) {
        chart = allCharts[i];
        oldFilters = chart.filters(); // Get current filters
        chart.filter(null); // Reset all filters on current chart
        for (j = 0; j < oldFilters.length; j++) {
            // Set all the oldFilters back onto the chart
            chart.filter(oldFilters[j]);
        }
    }
    dc.redrawAll();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换交叉过滤器数据,恢复维度和组 的相关文章

随机推荐

  • PostgreSQL 中的约束和断言

    我正在尝试创建一个简单的数据库 其中有一个客户数据表和一个订单数据表 我正在尝试编写一个约束 使客户在某一天订购的商品数量不能超过特定数量 这是我所拥有的 CREATE TABLE CUSTOMER CUSTOMER NUM CHAR 3
  • python 正则表达式:用单个子替换地址中的 st、and、the 等

    我有很多地址 例如 东 19 街 或 西 141 街 我想在一次 re sub 调用中删除 th 和 st re sub d st d nd d rd d th g lt 1 gt East 19th Street 不起作用 因为它并不总是
  • 当宏注释不能在定义它的同一编译中使用时,这意味着什么?

    我对这个说法很好奇 错误 3 18 另一种可能性是您尝试使用宏 定义它的同一编译运行中的注释 我尝试谷歌搜索并发现了这个 最后 请记住 使用宏需要分两步进行编译 首先编译宏 然后编译使用宏的代码 这是必要的 以便您的宏可以在编译其余代码之前
  • .Net 中值类型有什么用?

    The 官方指南 http msdn microsoft com en us library y23b5415 aspx表明这些的实际用途很少 有没有人有例子说明他们在哪里充分利用了它们 相反 您会发现 C C 人们涌向结构 又称值类型 一
  • 如何在 python 中对 POST 方法进行单元测试?

    我有一个方法可以将包含 JSON 的 POST 发送到 Elasticsearch 实例 我正在尝试编写一个单元测试来验证发送的 JSON 的内容 但我不确定如何进行 我应该在 python 中创建一个本地服务器并让它验证 POST 的内容
  • .NET 4 构建期间未找到 LC.exe 文件

    我在迁移到 net 4 0 时遇到问题 在尝试构建时出现以下错误 C WINDOWS Microsoft NET Framework v4 0 30319 Microsoft Common targets 1917 9 error MSB3
  • vb6 打开文件以追加问题路径未找到

    Open App Path Folder str 0 For Output 似乎找不到一条路径 但是如果就在这之前我就找到了 MsgBox App Path Folder str 0 它提供了我想要的正确目录 文件名 如果我用引号中的直接路
  • 有没有办法访问之前在“heightForRowAtIndexPath”中计算的行高?

    我在方法 heightForRowAtIndexPath 中计算行的高度 但我需要在方法 cellForRowAtIndexPath 中使用该值 有没有办法访问已经计算的值 或者我需要再次进行计算 Thks Gotye None
  • Rails 使用缩写对模型进行非正统命名

    在我正在构建的应用程序中 我使用以下命令在数据库中存储 XML 文件acts as tree协会 我想给班级起个名字XMLElement但这会偏离轨道 因为大写是非标准的 它正在寻找XMLElement从文件名xml element rb
  • Scavenger:分配失败 - JavaScript 堆内存不足

    这是错误消息 lt Last few GCs gt 2383 0x7efe08001450 6100 ms Scavenge 30 3 39 5 gt 30 5 42 7 MB 73 5 0 0 ms average mu 1 000 cu
  • 为什么“git mergetool”(meld)显示冲突标记?

    为什么 git mergetool meld 向我显示带有 conclict 标记的祖先视图 这是完全错误的 我一直不明白为什么会这样做 我该如何修复它 应该显示 3 路合并 Your Changes Common Base Upstrea
  • chaquopy代码在哪个目录中搜索Android应用程序代码的Python代码中导入的Python包

    我已在 chaquopy Android 应用程序的 Python 代码的主要方法中导入了 nltk 库 它要求我实施nltk download punkt 供我处理 所以我想知道 代码在哪个目录中查找包 以便我可以在所需的文件夹中下载它们
  • 如何将数据传回父窗口?

    我找到了一个链接 显示如何将参数发送回打开器浏览器窗口 但它仅适用于window showmodal 如果我使用的话 应该有一个简单的方法可以做到同样的事情window open right 如果您使用 window open 则可以调用父
  • QThread::start(优先级) 与 Linux

    我正在使用一些QThread基于 KDE Neon 18 04 中的工作线程 基于 Ubuntu 18 04 内核 4 15 0 46 generic 工作线程干扰了我的桌面应用程序 因此我决定降低它们的优先级 Qt 文档QThread s
  • Syslog 真的有 1KB 消息限制吗?

    Syslog 似乎有 1KB 消息限制 这是硬编码到 Syslog 协议中的 还是可以为每个服务器设置的参数 我希望我读到的文章已经过时 所以如果您有任何信息 请分享 这是正确的 正如在系统日志协议 RFC https www rfc ed
  • 从 PHP/Apache 返回 100-Continue

    我正在尝试找到一种方法来防止脚本将不必要的数据上传到 PHP 脚本 我最初试图终止传入的读取连接 这显然违反了 HTTP 协议 我无法让它工作 但我一直在研究替代方案 发现100 Continue状态码正是我所需要的 我的客户应该发送所需的
  • AES密钥导出函数

    我有一个 bash 脚本 它使用 openssl 加密数据 并使用 Java 代码解密结果 根据我之前的post https stackoverflow com questions 8343894 aes encrypt with open
  • 使用 Selenium 测试 Sencha 2 应用程序

    我无法单击 Sencha 2 生成的按钮 因为它不是输入字段 它用 div 和 span 构建了按钮 找到这个链接 它描述了如何通过 Selenium 测试单击按钮http mobilewebqa blogspot com http mob
  • 如何获取 sqlalchemy 中受影响的行数?

    我有一个关于 Python 和 sqlalchemy 模块的问题 相当于什么cursor rowcount在 sqlalchemy Python 中 ResultProxy对象有一个rowcount https docs sqlalchem
  • 替换交叉过滤器数据,恢复维度和组

    我在用着dc js http dc js github io渲染数据集的漂亮气泡图 底层的 dc js 是交叉过滤器 https github com square crossfilter 我想使用来自服务器的新数据顺利刷新我的图表 这个问