在运行时更改我的折线图的域
在我的代码中,我加载了超过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中的所有数据介于0
到5000
之间。但是我已经修改了JSON的一些对象来实现更改域,然后通常所有行的新域必须与更改相同。
例如在JSON的第106行到"AF3":7000
。 (在这种情况下,域应是[0-7000]对于所有的行)
在线路300,"AF4": - 1000
。(在这种情况下,域应是[-1000,7000]对于所有的行)
我已经修改了一些数据以实现此更改。我希望所有行都能更新到这个新的域,如果可能的话用动画。
我该怎么办?
这是我的代码:
要在所有的线路图更新域,我们需要重新计算域之前,新的数据中获取推
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内,这可能是不够的。不幸的是,我没有任何资源来支持它。如果有人可以编辑此答案以提供证据,请随时取消。
我已经分叉plunker并添加了代码来更新域。让我知道这是你在找什么。 http://plnkr.co/edit/0MuqjRwlCCxp0B3zwXly?p=preview – Gunner
@Gunner @Gunner感谢您的回答。朋友,我需要这个速度更快,所以我把持续时间设置为10.有些奇怪的事情发生,当“cont”是106时,它应该在所有行中显示更改,因为最大值是“7000”,并且在那一刻没有看到行中的任何变化。在那一刻,我没有看到行被重新调整。为什么?有没有什么方法可以显示当前的域控制台?例如'0-5000','0-7000','-1000,7000'根据情况https://i.imgur.com/S5OrnVY.jpg – yavg
@Gunner抱歉,我认为这是一个视觉错误我的部分,我只是尝试了15000而不是7000,你看到了一个变化。 (为了确保这就是为什么我要显示域名)我的问题的答案是,没关系,对吧? ,也许这是对我的看法的错误。我有兴趣试图展示这些线条并尽可能快地走数据。如果“持续时间”给你的值为1,那为什么要修剪图形? https://i.imgur.com/zJqN67C.jpg – yavg