Javascript 从DC.JS系列图表的维度筛选空值

Javascript 从DC.JS系列图表的维度筛选空值,javascript,d3.js,charts,dc.js,Javascript,D3.js,Charts,Dc.js,我正在尝试从一个具有多个维度的数据集使用DC.JS创建多个时间序列图表 我遇到的问题是,每个维度中都有空值 date,value,#transactionLocalServiceperformancedashboard,Averagetimeonpage,Channelbreakdownfortransactions,Numberofuserenquiries,Pageviews,Reasonsforrejectedapplications,UniqueVisitors,"Userswhouse

我正在尝试从一个具有多个维度的数据集使用DC.JS创建多个时间序列图表

我遇到的问题是,每个维度中都有空值

date,value,#transactionLocalServiceperformancedashboard,Averagetimeonpage,Channelbreakdownfortransactions,Numberofuserenquiries,Pageviews,Reasonsforrejectedapplications,UniqueVisitors,"Userswhousetransaction,abandonoruselegacyroutewhenstartinganonlineapplication",Visits
05/02/17,1.2,,Average time on page,,,,,,,
05/02/17,105,For telephone,,Number of transactions phone,,,,,,
05/02/17,110,For post,,Number of transactions face to face,,,Number of incomplete,,Use legacy route,
05/02/17,165,For face to face,,Number of transactions online new transaction,,,,,Use new transaction,
05/02/17,178,,,,,,,Unique visitors,,
05/02/17,198,,,,,,,,,Visits
经过大量的搜索,我找到了这个JSFIDLE

function remove_empty_bins(source_group) {
    return {
        all:function () {
            return source_group.all().filter(function(d) {
                return d.value !== "";
            });
        }
    };
};

var coerce_row = function(d){
    // console.log(d.VerifyLocalServiceperformancedashboard)

    return {
        time: d.date,
        field: remove_empty_bins(d.VerifyLocalServiceperformancedashboard),
        count: +d.count,
    };
};

var dataset = data.map(coerce_row);

我基本上是想过滤掉每个维度的空值,并绘制该维度的图表


DC.JS是否可以实现这一点,或者我是否需要为每个维度获取单独的csv文件并为每个图表加载它们-我让系列图表处理单个维度

remove\u empty\u bin
用于交叉筛选组。将其应用于单个行不会有太大的实用性(因为如果您想操作输入数据,可以使用普通Javascript)。我不完全确定您想在这里做什么,但也许您希望正常聚合,然后删除与空箱子标签
相对应的箱子。我需要将csv中的每一列数据与日期和计数列进行对比。e、 g在“#transactionLocalServiceperformancedashboard”中,我需要根据每个条目对应的日期和计数值绘制图表。您可以在该列中看到“”值。我正在寻找一种方法,可以从代码中名为“dataset”的变量中删除这些条目。我从代码中了解到,名为强制_row的函数应该只生成一个包含“time”、“field”和“count”的对象。看看输出,我可以看到情况似乎并非如此,我不明白为什么,因为我是JS新手。我已经使用python脚本对数据进行了整形。你能解释一下“正常聚合”是什么意思吗?如果不是太厚颜无耻的话,你能告诉我如何在我的代码中使用你上面提到的“删除特定垃圾箱”吗。感谢您的回复我认为您需要重新考虑您的数据结构。在Excel或您选择的工具中获取数据,并对其进行排列,使空白单元格尽可能少。如果您想在问题中发布一个问题,列出您的数据结构和一个表格格式的示例,并询问如何改进它,那么答案可能会让您走上正确的轨道。追求整洁的数据原则可能是一个良好的开端,尽管对于dc.js/crossfilter来说,超长表方法并不总是最佳的——正如@EthanJewett所说的,您最好将源数据平坦化。看起来您目前正在尝试使用JavaScript实现这一点,这也是可能的,但您也可以使用您更熟悉的语言/环境来实现这一点。这就是说,应该有一种方法来处理现有的数据,而不必像
data.map(强制行)
那样将数据平铺成三列行。我想我不太愿意尝试回答这个问题,因为在通过交叉过滤器传递数据之后应该使用
删除空的容器
,所以我真的不明白您想做什么。