重新缩放折线图,它会变形

时间:2017-10-11 05:11:03

标签: javascript d3.js

我已经麻烦地解决了我的问题,我希望你能理解我。 在我的真实项目中,我连接了7个传感器,它们返回了这种结构的响应。

[{"id":"sensor1_ciclo1","sensor":1,"ciclo":"ciclo1","values":
 [
  {"voltaje":0,"corriente":11.175}
 ]

"sensor"键表示传感器编号。我有7个输入无线电来代表每个传感器。关键“ciclo”,是传感器的属性。我可以过滤这个属性。虽然在这种情况下,我的所有数据都使用"ciclo": "ciclo1"。在折线图中,我使用键"corriente""voltaje"绘制点。

在我的真实项目中,我根据一段时间获取数据,对于这种情况,我使用setInterval 3秒来模拟它们。我想用动画绘制与所选传感器对应的数据。如果选择了sensor1,我只想放入sensor1数据。

如果我更换传感器,我希望看到已经积累的数据,这是我的函数reloadPoints的主要功能,累计值在oDataSensoresdisplay函数负责绘制数据,如果y轴上的限制大于250或-250,则重新调整图表。

请看gif。

enter image description here

我不知道如何修复它。最奇怪的是,如果我评论这一行,

 Array.prototype.push.apply(oDataSensores[data[i].id].content.values, data[i].values);
它显然有效。但我需要通过传感器累积值,所以我不能删除这一行。我该如何解决?

要重现错误,请等待9秒,并且当添加sensor1中的第三行并重新调整图表(> 250)时,会出现此问题。

添加新点时我想要实现的过程

enter image description here

这是我的代码:

http://plnkr.co/edit/1s25ZVEM0pWZPkVJGart?p=preview

{
  "sensor1_ciclo1":{ "contador":0, "sensor":1, "content":[] },
  "sensor1_ciclo2":{ "contador":0, "sensor":1, "content":[] },
  "sensor1_ciclo3":{ "contador":0, "sensor":1, "content":[] },
  "sensor2_ciclo1":{ "contador":0, "sensor":2, "content":[] },
  "sensor2_ciclo2":{ "contador":0, "sensor":2, "content":[] },
  "sensor2_ciclo3":{ "contador":0, "sensor":2, "content":[] },       
  "sensor3_ciclo1":{ "contador":0, "sensor":3, "content":[] },
  "sensor3_ciclo2":{ "contador":0, "sensor":3, "content":[] },
  "sensor3_ciclo3":{ "contador":0, "sensor":3, "content":[] },   
  "sensor4_ciclo1":{ "contador":0, "sensor":4, "content":[] },
  "sensor4_ciclo2":{ "contador":0, "sensor":4, "content":[] },
  "sensor4_ciclo3":{ "contador":0, "sensor":4, "content":[] },    
  "sensor5_ciclo1":{ "contador":0, "sensor":5, "content":[] },
  "sensor5_ciclo2":{ "contador":0, "sensor":5, "content":[] },
  "sensor5_ciclo3":{ "contador":0, "sensor":5, "content":[] },    
  "sensor6_ciclo1":{ "contador":0, "sensor":6, "content":[] },
  "sensor6_ciclo2":{ "contador":0, "sensor":6, "content":[] },
  "sensor6_ciclo3":{ "contador":0, "sensor":6, "content":[] },    
  "sensor7_ciclo1":{ "contador":0, "sensor":7, "content":[] },
  "sensor7_ciclo2":{ "contador":0, "sensor":7, "content":[] },
  "sensor7_ciclo3":{ "contador":0, "sensor":7,"content":[] }   
};

1 个答案:

答案 0 :(得分:1)

更改array.push的工作方式可以解决您的问题

aVoltamograma.push(data[i])

http://plnkr.co/edit/NZcV24gEDX1ommcYUDTd?p=preview