Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >dc-js linechart在过滤其他图表时消失。

dc-js linechart在过滤其他图表时消失。
EN

Stack Overflow用户
提问于 2015-07-23 23:35:37
回答 1查看 476关注 0票数 1

我是dc.js的新手,所以我可能遗漏了一些东西,我尝试在三个时间维度上显示时间序列数据:按月、按日、按小时--基本上是为了显示机器(制造)的效率。

所以我为月份和时间做了一个条形图,为白天做了一个直线图。代码如下:

代码语言:javascript
运行
AI代码解释
复制
            var cfdata = crossfilter(dataArray);
            var avgadd = function(p,v) {
                p.count++;
                p.sum += v.efficiency;
                p.avg = p.sum/p.count;
                return p;
            },
            avgremove = function(p,v) {
                p.count--;
                p.sum -= v.efficiency;
                p.avg = p.sum/p.count;
                return p;
            },
            avginit = function(){
                return {
                    count: 0,
                    sum: 0,
                    avg: 0
                }
            };
            var parseDate = d3.time.format('%a %b %d %Y %H:%M:%S GMT%Z (UTC)').parse;

            dataArray.forEach(function(d) {
                d.date = parseDate(d.date);
                d.hour = d3.time.hour(d.date).getHours();
                d.day = d3.time.day(d.date);
                d.month = d3.time.month(d.date);
                // d.year = d3.time.year(d.date).getFullYear();
            });

    // dimensions: efficiency by hour
    var hourDim = cfdata.dimension(function(d){return d.hour});
    var hourlyEff = hourDim.group().reduce(avgadd, avgremove, avginit);

    // dimensions: efficiency by day
            var dayDim = cfdata.dimension(function(d){return d.day});
            var minDay = dayDim.bottom(1)[0].date;
            var maxDay = dayDim.top(1)[0].date;
      var dailyEff = dayDim.group().reduce(avgadd, avgremove, avginit);

      // dimensions: efficieny by month and year
      var monthDim = cfdata.dimension(function(d){return d.month});
      var minMonth = monthDim.bottom(1)[0].date;
      var maxMonth = monthDim.top(1)[0].date;
      var monthlyEff = monthDim.group().reduce(avgadd, avgremove, avginit);

      dc.barChart(".month-eff-chart")
            .height(180)
            .width(900)
            .dimension(monthDim)
            .group(monthlyEff)
            .valueAccessor(function(p){return p.value.avg})
            .centerBar(true)
            .x(d3.time.scale().domain([minMonth, maxMonth]))
            .xUnits(d3.time.months)
            .xAxis().ticks(d3.time.month, 1).tickFormat(d3.time.format("%b %y"));

      dc.lineChart(".day-eff-chart")
            .height(180)
            .width(900)
            .dimension(dayDim)
            .group(dailyEff)
            .valueAccessor(function(p){return p.value.avg})
            .elasticX(true)
            .x(d3.time.scale())
            .xUnits(d3.time.days)
            .xAxis().ticks(d3.time.week, 1).tickFormat(d3.time.format("%W/%y"));

      dc.barChart(".hour-eff-chart")
            .height(180)
            .width(900)
            .dimension(hourDim)
            .group(hourlyEff)
            .valueAccessor(function(p){return p.value.avg})
            .x(d3.scale.linear().domain([0,23]));

      dc.renderAll();

所以当我打开页面并在任何一个条形图上进行过滤时,其他条形图会过滤得很好,但是直线图会变得空荡荡的--线条将完全消失。当我把线条图改成条形图时,它就能工作了--过滤器很好。

我一定是漏掉了什么。

此外,关于如何以更有意义的方式显示时间序列数据的建议也受到欢迎。谢谢!

编辑: JsFiddle:http://jsfiddle.net/shuzf2vm/2/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 11:59:14

这不起作用的原因是,当计数为零时,平均值将产生NaNs。你需要像这样保护你的部门:

代码语言:javascript
运行
AI代码解释
复制
    var avgadd = function(p,v) {
        p.count++;
        p.sum += v.efficiency;
        p.avg = p.count ? p.sum/p.count : 0;
        return p;
    },
    avgremove = function(p,v) {
      p.count--;
      p.sum -= v.efficiency;
      p.avg = p.count ? p.sum/p.count : 0;
      return p;
    },

工作叉:http://jsfiddle.net/gordonwoodhull/hsqa43uk/3/

它对条形图和线条图的行为不同的原因是有趣的。两者都保护输出到绘图函数和检测NaNs。但是条形图单独地保护每个条形图,而线条图输出一个多段线,如果任何点是坏的,则抛出整条线。

(如果有人想申请公关,在这里使用d3.svg.line.defined可能会更有帮助。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31604727

复制
相关文章
可组合的 Vue
2021年5月来自全球各地的Vue.js开发者齐聚线上,一起见证了VueConf 2021 杭州的成功举办。
@超人
2021/07/05
4890
可组合的 Vue
函数c()_函数的调用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/15
3.7K0
匿名函数自调用_自己调用自己的函数叫
我们知道一个HTML文件在被加载的时候是从根标签html依次往下的,在遇到link,script等标签引入的外部资源时,下载外部资源,并执行外部资源。在js中,表达式会被立即执行,也就是说,不管是引入的外部js文件还是嵌入在html文件中的js脚本,其中的表达式都会被立即执行。 函数名是一个指向函数的指针。在JavaScript中,定义函数有常见的两种形式:函数声明和函数直接量(或者叫函数表达式)。 函数声明:采用function定义声明函数的标准写法,包括function,函数名,函数体。如
全栈程序员站长
2022/11/09
2.6K0
奇怪的函数调用
整理移动硬盘时,发现一个名为 attack 的目录,进去以后发现原来是一段简单的 C 语言代码。代码如下:
码农UP2U
2021/09/02
1.8K0
奇怪的函数调用
oracle函数的调用应使用execute命令_matlab函数调用
之前一直使用的MySQL数据库,第一次接触Oracle就用到了函数和存储过程,今天跟大家分享一下使用过程.
全栈程序员站长
2022/10/04
2.3K0
oracle函数的调用应使用execute命令_matlab函数调用
JavaScript 的 this 小结纯粹的函数调用作为对象方法的调用作为构造函数调用apply 调用
函数的不同使用场合,this有不同的值。 总的来说,this就是函数运行时所在的环境对象。 下面分情况,详细讨论
JavaEdge
2018/08/02
2.8K0
JavaScript 的 this 小结纯粹的函数调用作为对象方法的调用作为构造函数调用apply 调用
c++函数调用,函数编写(写自己的函数)以及数组调用,传递
在matlab里.m文件分执行文件和函数文件 在c++中执行文件指:main函数 函数文件:其他所有需要用到的函数
用户7886150
2021/02/03
2.4K0
Lua函数的冒号调用和点调用
冒号定义函数中的self指向函数所属表对象,即self是table类型,通过self表可以:访问挂载在该表下的所有冒号定义函数 如,有定义A={},A:b() A:c();函数b,c都是冒号定义函数,在b,c函数内部self是地址指向A的表,在b函数中可以通过self:c()来调用c函数,同理在c函数中也可以通过self:b()来调用b函数 代码示例:
bering
2020/03/19
3.4K0
python之函数的调用
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的调用相关内容。
jiankang666
2022/12/05
1.1K0
python之函数的调用
Python调用PHP的函数
        在电子商务的web平台中有可能存在这样的需求,在月末进行分红账务结算,这样就需要在web服务器下写脚本定时执行数据库的操作,这里有很多种可选的方案,Python调
py3study
2020/01/07
3.5K0
函数的调用约定 _cdecl
_cdecl(C declaration,即C声明)是源起C语言的一种调用约定,它规定,在C语言中,函数实参在线程栈上按照从右至左的顺序依次压栈,也就是说,函数参数从右往左传入。
叶茂林
2023/07/28
3870
函数的调用约定 _cdecl
(十七)函数的调用签名
# 一、函数的调用签名 说明 函数的调用签名跟我们上节课使用 type 来定义函数类型的效果基本类型是一样的 但是它支持函数附带额外属性的情况,因为在 javasctipt 里面函数也是一个特殊的对象,可以包含额外的属性 例 // 和我们之前 使用 type 定义函数类型是一样的,只是调用签名是对象形式 type RequesCallback = { (result: string): void // 以为是对象形式,所以不能使用箭头函数 } function request(callba
老怪兽
2023/02/22
1K0
函数的定义和调用
1.1函数的定义方式 方式1 函数声明方式 function 关键字 (命名函数) function fn(){} 方式2 函数表达式(匿名函数) var fn = function(){} 方式3 new Function( '参数1', '参数2',' 函数体'); var f = new Function('a', 'b', 'console.log(a + b)'); f(1, 2); console.1og(f instanceof Object ); //instanceof
星辰_大海
2020/10/26
1.6K0
函数的定义和调用
【编程经验】函数的调用
主调函数使用被调函数的功能,称为函数调用。在 C 语言中,只有在函数调用时,函数体中定义的功 能才会被执行。
编程范 源代码公司
2018/07/24
8350
函数的定义和调用
1.函数的定义和调用 1.1函数的定义方式 方式1 函数声明方式 function 关键字 (命名函数) function fn(){} 方式2 函数表达式(匿名函数) var fn = function(){ 方式3 new Function() var f = new Function('a', 'b', 'console.log(a + b)'); f(1, 2); ​ var fn = new Function('参数1','参数2'..., '函数体') 1.2函数的调用方式 普通函数
梨涡浅笑
2020/10/27
9120
函数的定义和调用
image.png
清出于兰
2022/05/11
9970
函数的定义和调用
JavaScript 函数调用
在 HTML 中默认的全局对象是 HTML 页面本身,所以函数是属于 HTML 页面。
陈不成i
2021/07/19
2.3K0
关于调用函数
在调用函数时只需要传入指定数量和指定类型的值在参数表的指定位置这些值将在方法启动前赋值给形参
算法与编程之美
2022/10/28
1.5K0
关于调用函数
函数调用约定
现代的几乎所有的编程语言都离不开函数和参数的概念。而这个概念是编程语言级别的,而不是硬件级别的。也就是说硬件上本来没有函数的概念。只是函数的用的太普遍,硬件开始为函数准备专用的指令。
战神伽罗
2019/08/13
2.4K0
函数调用约定
在前面的文章中,可以发现无论是x86架构还是x64架构的程序,其内部的函数在被调用时候, 都是首先将函数参数压入栈中(而且是从右向左),然后调用函数,最后还需要调整栈帧。
Elapse
2020/08/17
2K0

相似问题

可组合函数可以调用不可组合函数吗?

12

从可鼠标调用可组合函数

11

可观测函数中调用可组合函数的问题

13

如何在可组合内部调用内部函数?

17

如何从不可组合函数调用可组合通知对话框

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档