D3时间刻度仅基于小时数而不是约束日期

时间:2013-10-09 06:45:59

标签: d3.js

我遇到了一个非常有趣的问题,

我正在创建折线图比较预订&取消多个航班直至出发地。所以X轴必须显示只有几个小时的倒计时,如72 - 48 - 24 - 12 - 6 - 0,我怎样才能使用d3s可用的线性刻度和&时间尺度。 ?

我目前正在使用线性恐慌,但其基数为10,所以不会像预期的那样工作

使用时间缩放时显示日期,但不应该绑定日期,只需要在航班起飞前144小时显示。

非常感谢您的帮助。

enter image description here

enter image description here

提前致谢

1 个答案:

答案 0 :(得分:0)

我找到了解决方案

我不确定它是否正确的方式,但它适用于我,基本上我们必须改变刻度的格式来代表分钟而不是十进制数

这就是我做的

创建一个线性比例,将十进制转换为分钟

var dectomin = d3.scale.linear().rangeRound([0 , 60]).domain([0,1]);

并使用tickFormat函数格式化轴组件上的刻度标记

var chartXAxis  = d3.svg.axis().scale(chartXScale).orient("bottom")
                    .tickFormat(function(n){ 
                        if(n % 1 === 0) {
                            return n;                            
                        } else {
                            var f = Math.floor(n);
                            var d = n - f;
                            return f + ":" + chartXScaleTime(d);
                        }
                    });

感谢prayerslayer了解这个想法