【问题标题】:D3: X Axis values wrongD3:X 轴值错误
【发布时间】:2020-03-03 03:33:23
【问题描述】:

我是 d3.js 的新手,但遇到了问题。我用 React.js 制作了一个组件,我在同一页面中重复使用。这个组件绘制了一个散点图,我第一次调用这个组件时正确显示了两个轴(左侧)。但是,我第二次称它为 x 轴显示错误的值,但 y 轴显示正确的值(正确的值)。

我传递给右侧图形组件的值是:

x: 5.56 y: 0.00
x: 5.56 y: 33.33
x: 44.44 y: 0.00
x: 0.00 y: 0.00
x: 22.22 y: 33.33
x: 0.00 y: 0.00
x: 0.00 y: 33.33
x: 22.22 y: 0.00

你可以看到,x 的最小值是 0.00,x 的最大值是 44.44,但是我们在 x 轴上得到了像 min -1.0 和最高的 5.5

我定义轴刻度的代码是:

setScales(data){ 
    let xRange = [this.state.margin.left, this.state.width - this.state.margin.right];
    let yRange = [this.state.margin.top, this.state.height - this.state.margin.top - this.state.margin.bottom]; // flip order because y-axis origin is upper LEFT  

    let xScale = d3.scaleLinear()
    .domain([ d3.min(data, function(d) { return d.value_x; }) - 1,
              d3.max(data, function(d) { return d.value_x; }) + 1 ])
    .range(xRange);

    let yScale = d3.scaleLinear()
    .domain([ d3.max(data, function(d) { return d.value_y; }) + 1,
              d3.min(data, function(d) { return d.value_y; }) - 1 ])
    .range(yRange);       

    return {"xScale" : xScale, "yScale" : yScale, "xRange" : xRange, "yRange" : yRange};
} 

那么,我做错了什么?发生了什么事?

【问题讨论】:

    标签: javascript reactjs d3.js


    【解决方案1】:

    ¡¡¡我找到了解决办法!!!!

    我不知道为什么,但问题出在数据类型上。我已经将值解析为浮动,现在它可以工作了。

    let xScale = d3.scaleLinear()
    .domain([ d3.min(data, d => parseFloat(d.value_x)) + 1, d3.max(data, d => parseFloat(d.value_x)) - 1])
    .range(xRange);
    

    我不知道为什么会发生这种情况,因为我从同一个函数中获得了值,而我获得了左侧图形的值。

    现在,两个图形都是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多