Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单击datatable以过滤其他图表(dc.js)_Dc.js - Fatal编程技术网

单击datatable以过滤其他图表(dc.js)

单击datatable以过滤其他图表(dc.js),dc.js,Dc.js,我需要在单击datatable中的一行时筛选其他图表 是的 但在其他图表中什么也没有发生 您能帮我一下吗?如果表维度是维度。。。 通常填充数据表的数据是原始数据集中的原始行,而不是键/值对 因此,d.key可能未定义 我建议你先坚持下去 console.log(d) 进入单击处理程序,查看数据的外观,以确保d.key有效 其次,请记住图表会过滤其维度。因此,您需要将一个值传递给table.filter(),该值是维度的有效键,然后它将过滤掉键不同的所有行。这可能不仅仅是您选择的一行 通常,选择

我需要在单击datatable中的一行时筛选其他图表

是的

但在其他图表中什么也没有发生

您能帮我一下吗?

如果表维度是维度。。。 通常填充数据表的数据是原始数据集中的原始行,而不是键/值对

因此,
d.key
可能未定义

我建议你先坚持下去

console.log(d)
进入单击处理程序,查看数据的外观,以确保
d.key
有效

其次,请记住图表会过滤其维度。因此,您需要将一个值传递给
table.filter()
,该值是维度的有效键,然后它将过滤掉键不同的所有行。这可能不仅仅是您选择的一行

通常,选择表维度是因为它对行的值进行排序的方式。实际上,您可能需要过滤其他维度。但希望这足以让你开始

但是如果表维度是一个组呢? 只有当您的表采用交叉筛选维度作为其维度时,上述技术才会起作用。如果像在注释中链接的小提琴中一样,使用组作为维度,则该对象没有
.filter()
方法,因此
table.filter()
方法将不起任何作用

如果您只需要筛选单击的一个项目,那么您可以这样做

foodim.filter(d.key)
这是有效果的,但没那么有用

如果您需要dc顺序图表中使用的切换功能,则需要对其进行模拟。并不是那么复杂:

// global
var filterKeys = [];

// inside click event

                if(filterKeys.indexOf(d.key)===-1)
                  filterKeys.push(d.key);
                else
                  filterKeys = filterKeys.filter(k => k != d.key);
                if(filterKeys.length === 0)
                  foodim.filter(null);
                else 
                  foodim.filterFunction(function(d) {
                    return filterKeys.indexOf(d) !== -1;
                  })

fiddle示例:

您好,我的英语很抱歉。关于您的第一个建议,如果我在使用console.log(d.key)进行测试时获得数据的密钥,该密钥对应于datatable维度的密钥。我希望在选择该键时,影响与数据关联的图形,这些图形具有其他维度,但与交叉过滤器关联。一旦我从
d
中选择了一个适合维度的字段,它就对我起了作用。如果看不到工作示例或至少更多的代码+示例数据,很难说你的应用程序出了什么问题。我知道,你在维度中使用了一个组,而组不过滤,维度过滤。我在回答中加了一条注释。
// global
var filterKeys = [];

// inside click event

                if(filterKeys.indexOf(d.key)===-1)
                  filterKeys.push(d.key);
                else
                  filterKeys = filterKeys.filter(k => k != d.key);
                if(filterKeys.length === 0)
                  foodim.filter(null);
                else 
                  foodim.filterFunction(function(d) {
                    return filterKeys.indexOf(d) !== -1;
                  })