DC.js 交叉过滤器维度计数直方图

2023-12-07

我有一个交叉过滤器,输入了以下数据结构。

project | subproject | cost
data = [
["PrA", "SubPr1", 100],
["PrA", "SubPr2", 150],
["PrA", "SubPr3", 100],
["PrB", "SubPr4", 300],
["PrB", "SubPr5", 500],
["PrC", "SubPr6", 450]]

我可以创建一个条形图,其中包含每个项目的总成本:

var ndx = crossfilter(data)
var projDim = ndx.dimension(function(d){return d.project;});
var projGroup = costDim.group().reduceSum(function(d){return d.budget;});

我想做的是按项目成本创建一个 dc.js 直方图...所以 {450: 2, 300: 1} 等。据我所知,crossfilter 只能输入每行的属性方面。有没有解决的办法?


接受挑战!

确实,crossfilter不支持这种双重缩减,但是如果您愿意接受稍微的效率损失,您可以创建“假维度”和“假团体" 具有所需的行为。幸运的是,dc.js 并没有使用太多的 crossfilter API,因此您不必实现太多的方法。

该技巧的第一部分是复制维度和组,以便新维度和旧维度将各自观察到对方的过滤。

第二部分是创建假组和维度,它们遍历复制组的箱,并根据值而不是键重新装箱和重新过滤。

下面是通用解决方案的开始。对于某些图表,还需要实施group.top(),通常可以将其转发到group.all().

function values_dimension(dim, group) {
    return {
        filter: function(v) {
            if(v !== null)
                throw new Error("don't know how to do this!");
            return dim.filter(null);
        },
        filterFunction: function(f) {
            var f2 = [];
            group.all().forEach(function(kv) {
                if(f(kv.value))
                    f2.push(kv.key);
            });
            dim.filterFunction(function(k) {
                return f2.indexOf(k) >= 0;
            });
            return this;
        }
    };
}

function values_group(group) {
    return {
        all: function() {
            var byv = [];
            group.all().forEach(function(kv) {
                if(kv.value === 0)
                    return;
                byv[kv.value] = (byv[kv.value] || 0) + 1;
            });
            var all2 = [];
            byv.forEach(function(d, i) {
                all2.push({key: i, value: d});
            });
            return all2;
        }
    };
}

// duplicate the dimension & group so each will observe filtering on the other
var projDim2 = ndx.dimension(function(d){return d.project;});
var projGroup2 = projDim2.group().reduceSum(function(d){return d.budget;});
var countBudgetDim = values_dimension(projDim2, projGroup2),
    countBudgetGroup = values_group(projGroup2);

jsfiddle在这里:http://jsfiddle.net/gordonwoodhull/55zf7L1L/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DC.js 交叉过滤器维度计数直方图 的相关文章

  • Dc.js 将范围图应用于多个图表

    过去几周我一直在使用 dc js 但有一个问题我似乎无法解决 我希望能够使用画笔过滤器基于单个图表更改四个不同图表的比例 大致如下 priorityTotChart width 2 w 3 height h 3 margins top 10
  • 行图在 dc.js/crossfilter 中仅选择一个条形图?

    我有一个 dc rowchart 它有 5 个不同的 类别 最初 所有内容都被选中 当我单击其中一个时 只有该一个会突出显示 当我单击第二个时 我单击的第一个和第二个都会突出显示 如何制作 配置行图 以便每次单击栏时仅突出显示一个类别 dc
  • 箱线图数据点异常值的对齐和颜色

    是否可以将箱线图的数据点和异常值对齐在一条直线上 就像箱线图的中心一样 此外 我可以为数据点着色吗 当前和所需的屏幕截图均附在其中 您可以使用 dataWidthPortion 0 根本不分散要点 文档 如果没有访问器 则更改任何内容的颜色
  • 直流交叉滤波器不工作

    在这里使用 dc 和 cross filter js 库构建一个 grails 应用程序 但在可视化中遇到了一个极其奇怪的问题 我的可视化是 5 个条形图 它们使用 dc 和 cross filter js 库相互互连 所以 有简单的指标
  • 使用 dc.js 均匀间隔的直方图箱?

    Mike Bostock 使用以下代码片段为直方图生成均匀间隔的箱 var data d3 layout histogram bins x ticks 20 values source http bl ocks org mbostock 3
  • 如何使用 dc.js 创建多线图表

    我正在使用维度图表 javascript 库 dc js 制作多折线图 该库基于 d3 和 crossfilter 我是 dc js 库的新手 我正在尝试使用 csv 文件显示多线图表 我无法理解如何按照 csv 格式创建多线图表 我的 c
  • 禁用 dc.js 中的交互性

    我有许多使用创建的条形图dc js 在默认行为中 用户可以单击并拖动其中任何一个来更新交叉过滤器 如何使图表 仅显示 也就是说 当其他组件更新交叉过滤器时 图表也会更新 但用户无法选择 仅显示 图表中的数据来更新交叉过滤器 None
  • 单击第一个图表中的数据点时,dc.js 访问多个图表中的数据点

    使用同一数据集的不同维度 屏幕上会显示三个 dc js 折线图 当用户单击任何折线图上的数据点时 我希望从所有其他图表 包括单击的图表 中找到并返回该对应点的数据值 我还尝试 在鼠标悬停时 将悬停的数据点的圆圈填充颜色更改为红色 以及所有其
  • 在 dc.js 中向饼图标签添加百分比

    我有一个饼图 我想为其添加百分比到标签 这里有一个jsfiddle http jsfiddle net vz64xbmw 22 饼图和代码如下 现在图表显示了实际值 我看了看dc js 入门和操作指南 http dc js github i
  • 在 dc.js / Crossfilter 中添加过滤器不更新图表

    js小提琴 http jsfiddle net PYeFP http jsfiddle net PYeFP 我设置了一个条形图 用于显示用户每天的出行次数 tripVolume dc barChart trip volume width 9
  • 为什么画笔阻止 dc.js barChart 工具提示出现?

    我不明白为什么要实施这种行为 有什么好的理由吗 为了具有画笔功能 必须在图形顶部绘制一个捕获所有鼠标事件的透明矩形 这可以防止任何鼠标事件触发主图形元素上的工具提示事件处理程序 这就是dc js API https github com d
  • geoChoroplethChart 地图,显示带有标签的城市/兴趣点

    我已经实现了信息图 地图 http smenglish github io dash snow using 交叉过滤器 http square github io crossfilter and d3 js https en wikiped
  • Crossfilter过滤器不过滤(dc.js)

    我试图在交叉过滤器中使用过滤器 但是不行 这是 JSBin http jsbin com liwiru 8 edit 这是最相关的代码 var userDimension data dimension function d return d
  • 如何使用 d3 生成 svg 客户端而不将其附加到 DOM(与 React.js 一起使用)

    我正在使用 React js 构建一个应用程序 其中包含相当多的 svg 图表 我使用 d3 函数来帮助创建图表 例如比例尺 然后使用 React 生成 svg 元素 这是关于该方法的精彩文章 http 10consulting com 2
  • 在 dc.js 中显示鼠标悬停时的附加数据属性

    我想在 dc js 中的鼠标悬停时显示其他数据标签和值 x 轴和 y 轴除外 下面是数据和图表代码 var people id 1 name Damaris gender Female DOB 1973 02 18 MaritalStatu
  • 使用不同颜色的 dc.js 显示原始(有条件)拉丝未拉丝交叉过滤器条

    假设我们有以下 crossfilter dc js 应用程序 虽然这很好 但用户在刷牙时会失去对人群的 参考 我想要图表x y z and a在刷其他图表时保留 基础 柱 也许是不同的颜色 如下所示 我相信这可能需要更新dc renderA
  • DC-sunburst、dc-Menuslect、dc-Non 交互图

    我是 dc js 的新手 我对 dc 的灵活性有一些疑问 首先 我一直在寻找答案 但还没有找到任何答案 1 我正在使用 dc sunburst 图表 我想知道是否可以创建 Zoomable sunburst 因为 d3 js 实际上就是这种
  • 如何在dc.js中过滤dataTable而不影响其他维度

    因此 有一段时间我一直在努力解决如何在 dc js 中过滤数据表而不影响其他维度 这似乎违反直觉 因为它违背了 crossfilter dc js 背后的数据过滤器 的最佳表现 但我将解释为什么这是相关的 假设我有一个人名 年龄和性别的数据
  • dc js 复合条形图 折线图

    我有一个 dc js 条形图 如下所示这个叉形小提琴 http jsfiddle net 89218vf1 3 此条形图将加载预定义的过滤器 例如本例中的 25 35 现在 我需要显示一个与条形图复合的折线图 突出显示带有高低线的过滤数据
  • dc lineChart 单击时弹出数据点信息

    我正在尝试检测折线图数据点上的点击 Per this answer dc scatter plot binding onClick event https stackoverflow com a 22772340 1873386 I am

随机推荐

  • Angular 将回调函数作为 @Input 传递给子组件,类似于 AngularJS 方式

    AngularJS 有 参数 您可以在其中将回调传递给指令 例如AngularJS 的回调方式 是否可以将回调作为 Input对于角度组件 如下所示 如果不是 那么与 AngularJS 最接近的是什么 Component selector
  • 如何查看哪个复选框被选中?

    如何在 PHP 中检查是否checkbox是否检查 如果选中该复选框 则将传递该复选框的值 否则 该字段不会在 HTTP post 中传递 if isset POST mycheckbox echo checked
  • 从 .NET 服务打印 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我现在正在开发一个项目 该
  • Maven项目中Tomcat部署问题

    我一直在尝试创建一个简单的基于 Maven Web 的项目 以对 Maven 充满信心 我在 pom xml 中添加了 tomcat7 插件以将其用作服务器 但是当我开始使用以下命令将 war 文件部署到 tomcat 时 tomcat7
  • ORDER BY 子句的 CASE WHEN 语句

    我正在使用 SQL Server 2008 R2 我想要对表中的记录进行基于优先级的排序 所以我在 ORDER BY 子句中使用 CASE WHEN 语句 ORDER BY 子句如下 ORDER BY CASE WHEN TblList P
  • 如何为 Java 应用程序构建 docker 容器

    我想要做的是为我的 Java 应用程序构建一个 docker 映像 但对于大多数编译语言来说 以下注意事项应该适用 problem 在我的构建服务器上 我想为我的应用程序生成一个 docker 映像作为可交付成果 为此 我必须使用一些构建工
  • 如何在unity3d上使用xcode游戏

    我有一个使用 Objective C 在 xcode 上构建的游戏 这个游戏需要与unity3d开发的另一个游戏集成作为它的一部分 我怎样才能做到这一点 有什么插件可以实现这个目的 问题是 我有一个unity3d游戏 而我在主游戏中几乎没有
  • 手动设置响应状态代码

    我有一个 try catch 块来处理我的应用程序遇到的错误 我想要一种简单的方法来设置对状态代码 403 或禁止的响应 然后将用户重定向到登录页面或自定义错误页面 我在设置状态代码和重定向时遇到一些问题 有人有设置状态代码然后重定向的示例
  • Pandas 将(不等长)列表的列拆分为多列

    这个问题的一个轻微的变体 Pandas 将列表的列拆分为多列 给定一个数据框 col1 0 1 2 0 1 0 1 2 3 4 5 6 0 1 2 3 如何将其转换为列等于最大长度的数据框 col1 col2 col3 col4 col5
  • flutter firebase 数据库和 ListView 构建器问题

    我想在 ListView 中显示我的 shopList 的每一项 但我找不到它一直显示相同记录的原因 请帮助解决这个问题 这里使用代码 从 firebase 数据库获取数据 databaseReference once then DataS
  • 用 C 语言和两个整数发送信号

    你能帮我完成以下任务吗 编写一个C程序 将命令行参数1和2解释为pid和信号号 并将相应的信号号发送到进程pid 要将命令行参数解释为整数 可以使用 C 函数 atoi 用户将通过标准输出得知该过程有多成功 此外 还应使用合适的退出代码 这
  • Java 默认值混乱,为什么函数作用域变量没有默认值? [复制]

    这个问题在这里已经有答案了 我对在我看来不一致的背后的推理感到困惑 例如 public class Test static int a public static void main String args System out print
  • Apache CXF:- 如何使用 cxf 拦截器提取有效负载数据

    我应该遵循哪些步骤来使用 Apache CXF 拦截器提取有效负载 你的拦截器需要从AbstractPhaseInterceptor或子类 public class MyInterceptor extends AbstractPhaseIn
  • 如何回滚 TFS 签入?

    我想回滚最近在 TFS 中所做的更改 在 Subversion 中 这非常简单 然而 在TFS中似乎有一个令人难以置信的头痛问题 选项 1 获取先前版本 手动获取每个文件的先前版本 签出进行编辑 失败 结帐 在 VS2008 中 迫使我获取
  • Java中InputStream的内存问题

    我需要将文件读入字节数组 整个文件需要读入数组 问题是我收到 OutOfMemory 错误 因为文件大小太大 增加 XmX似乎没有任何效果 这是代码片段 InputStream in new FileInputStream file lon
  • 如果选中复选框,如何更改 div 的颜色?

    我有根据数据库记录创建的表 在 tbody 内部 我有 tr 创建每个表行 表行具有同一日期的多个时间段 如果选中复选框 我想更改时间块的背景颜色 我让我的复选框正常工作 我用警报和里面的一些文本进行了测试 现在我正在尝试更改背景颜色 但到
  • 值更改时 Swiftui Textfield 不更新

    我在表单上有一个文本字段 用户可以在其中输入值 但我还想使用按钮更新文本字段的内容 这是我的代码 struct test View State private var amount Double 0 0 var body some View
  • 汇编:在 Windows nasm 中处理用户输入

    我是 asm 的新手 试图制作一个简单的 hello world 等待用户按一个键结束 现在 hello world 一切都很好 但是我从中获得的 exe 控制台程序立即关闭 而我希望它保留在屏幕上 直到用户按下某个键 现在我遇到的问题是
  • 使用 javascript 对数组进行排序,然后按特定顺序按值的小数部分排序

    我有一个数组 let arr 100 12 100 8 100 11 100 9 排序后得到输出 100 11 100 12 100 8 100 9 但我希望它像页面索引一样排序 100 8 100 9 100 11 100 12 编辑 我
  • DC.js 交叉过滤器维度计数直方图

    我有一个交叉过滤器 输入了以下数据结构 project subproject cost data PrA SubPr1 100 PrA SubPr2 150 PrA SubPr3 100 PrB SubPr4 300 PrB SubPr5