在运行时更改我的折线图的域

问题描述:

在我的代码中,我加载了超过900个数据的JSON。这些数据代表某些机器发出的数据。我正在绘制折线图,​​这个JSON中的键代表机器的名称。在运行时更改我的折线图的域

这是我的JSON的结构:

{"AF3":3605.1496928113393,"AF4":-6000.4375230516,"F3":1700.3827875419374,"F4":4822.544985821321,"F7":4903.330735023786,"F8":824.4048714773611,"FC5":3259.4071092472655,"FC6":4248.067359141752,"O1":3714.5106599153364,"O2":697.2904723891061,"P7":522.7300768483767,"P8":4050.79490288753,"T7":2939.896657485737,"T8":9.551935316881588}

每一行代表每一台机器,我把一个空间分别看到每一台机器。我目前正在借助名为cont的计数器读取数据。 JSON中的所有数据介于05000之间。但是我已经修改了JSON的一些对象来实现更改域,然后通常所有行的新域必须与更改相同。

例如在JSON的第106行到"AF3":7000。 (在这种情况下,域应是[0-7000]对于所有的行)

在线路300,"AF4": - 1000。(在这种情况下,域应是[-1000,7000]对于所有的行)

我已经修改了一些数据以实现此更改。我希望所有行都能更新到这个新的域,如果可能的话用动画。

我该怎么办?

这是我的代码:

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

+0

我已经分叉plunker并添加了代码来更新域。让我知道这是你在找什么。 http://plnkr.co/edit/0MuqjRwlCCxp0B3zwXly?p=preview – Gunner

+0

@Gunner @Gunner感谢您的回答。朋友,我需要这个速度更快,所以我把持续时间设置为10.有些奇怪的事情发生,当“cont”是106时,它应该在所有行中显示更改,因为最大值是“7000”,并且在那一刻没有看到行中的任何变化。在那一刻,我没有看到行被重新调整。为什么?有没有什么方法可以显示当前的域控制台?例如'0-5000','0-7000','-1000,7000'根据情况https://i.imgur.com/S5OrnVY.jpg – yavg

+0

@Gunner抱歉,我认为这是一个视觉错误我的部分,我只是尝试了15000而不是7000,你看到了一个变化。 (为了确保这就是为什么我要显示域名)我的问题的答案是,没关系,对吧? ,也许这是对我的看法的错误。我有兴趣试图展示这些线条并尽可能快地走数据。如果“持续时间”给你的值为1,那为什么要修剪图形? https://i.imgur.com/zJqN67C.jpg – yavg

要在所有的线路图更新域,我们需要重新计算域之前,新的数据中获取推

Plunker:http://plnkr.co/edit/AHWVM3HT7TDAiINFRlN9?p=preview

var newDomain = d3.extent(ids.map(function(d) { 
    return aData[cont][d] 
})); 
var oldDomain = y.domain() 
newDomain[0] = newDomain[0] < oldDomain[0] ? newDomain[0] : oldDomain[0] 
newDomain[1] = newDomain[1] > oldDomain[1] ? newDomain[1] : oldDomain[1] 
y.domain(newDomain) 
domain.text(y.domain()) 

关于图像被修剪,数据需要被操纵(在你的情况下,14阵列,推动和转换操作对阵列和D3转换)都在1ms内,这可能是不够的。不幸的是,我没有任何资源来支持它。如果有人可以编辑此答案以提供证据,请随时取消。

+0

感谢朋友.. – yavg

+0

毫无疑问,你是一个天才,你的回答让我满意,我也学到了新的东西。你能帮我解答这个问题吗? https://*.com/questions/46823073/how-can-i-make-to-display-my-data-more-quickly-on-my-chart – yavg