D3.js d3js时间刻度值相同,但结果不同

D3.js d3js时间刻度值相同,但结果不同,d3.js,scale,D3.js,Scale,我有两张重叠的图表。一个是条形图,一个是折线图。 两者在每个数据中都有一个日期(相同的日期-相同的结果计数),但是如果我计算每个图表的属性x,我会得到不同的结果 var x = d3.time.scale().range([0, width]); 宽度=860。 因此,我对d3js代码进行了深入的调试,并认识到以下几点: 如果我调用x(x(d.value)并进入它,我会得到以下代码: function d3_uninterpolateNumber(a, b) { b = b - (a

我有两张重叠的图表。一个是条形图,一个是折线图。 两者在每个数据中都有一个日期(相同的日期-相同的结果计数),但是如果我计算每个图表的属性x,我会得到不同的结果

var x = d3.time.scale().range([0, width]);
宽度=860。 因此,我对d3js代码进行了深入的调试,并认识到以下几点:

如果我调用x(x(d.value)并进入它,我会得到以下代码:

    function d3_uninterpolateNumber(a, b) {
b = b - (a = +a) ? 1 / (b - a) : 0;
return function(x) {
  return (x - a) * b;
};
  }
我看到x和a具有相同的值(x是日期(星期二7月2日00:00:00 UTC+0200 2013),a是刻度(1372716000000-->我数据中第一个日期的刻度),以7月2日为例

但是b有不同的值,所以我不知道b是什么。 如果是条形图,则为3.7947783849423196e-10;如果是线形图,则为3.7947783849423196e-10 所以x(d.value)的结果是不同的,但它不应该是

有人有主意吗? 我明天想弄把小提琴,但也许有人不用小提琴就能得到答案

提前thx ©a-x-i

问题已解决

要呈现条形图和折线图,我有两个不同的函数。在每个函数中,我都调用了x.domain

仅在折线图中:

x.domain([d3.min(data, function (d) { return d.xValue; }), d3.max(data, function (d) { return d.xValue; })]);
但在柱状图中:

var xMax = d3.max(data, function (d) { return d.xValue; });
        xMax = new Date(xMax.toString()); // otherwise data[<last>].xValue is changed as well!
        if (ChartHandler.SelectedAggregationPeriod == ChartHandler.AggregationPeriod.month) {
            xMax.setTime(xMax.getTime() + 12 * 60 * 60 * 1000); //+12h
        }
 var xMin = d3.min(data, function (d) { return d.xValue; });

        x.domain([xMin, xMax]);
var xMax=d3.max(数据,函数(d){返回d.xValue;});
xMax=新日期(xMax.toString());//否则数据[]。xValue也会更改!
if(ChartHandler.SelectedAggregationPeriod==ChartHandler.AggregationPeriod.month){
设置时间(xMax.getTime()+12*60*60*1000);//+12h
}
var xMin=d3.min(数据,函数(d){返回d.xValue;});
x、 域([xMin,xMax]);
就这样。。。。
©a-x-i

你是说,当你将相同的值传递到相同的刻度时,得到的值不同吗?是的,确实如此。我希望我能抽出时间为这个示例提供js提琴。我怀疑你传递的值是不同的数据类型,例如,一个是数字,另一个是字符串。很高兴你能弄明白。但你可能想知道可以在一次函数调用中计算最大值和最小值,以及时间刻度的函数或扩展域的函数。