我首先将域的下限和上限设置为动态值,根据您的数据集计算得出。根据结构或您的数据,d3 具有计算值数组中的最大值/最小值的方法max
。min
var x = d3.scale.linear().domain([d3.min(data), d3.max(data)]).range([0,w]);
如果你有一些方法来更新你的数据,你可以添加功能然后重新定义x
(你可能想附加x
到某种命名空间,在你的函数的整个范围内都可以访问),然后调用你的行生成器(通过d3.svg.line()
)。
更新
看到你的评论,让我澄清一下。
有几种不同的方法可以做到这一点,因为 d3 是一个如此低级的库(我个人认为这是吸引力的一部分)。在我自己的工作中,我使用了多个系列,这让我可以方便地使用常见的进入、更新和退出模型,这些模型与其他图表类型(如条形图)一起使用。但在最基本的条件下,这就是您需要的:
- 您最初需要设置几个对象:
- 你的 SVG 容器
- 你的 x 和 y 比例
- 线生成器,不绑定任何数据
- 接下来,您将使用该行生成器
SVG:path
使用您的数据集初始化一个元素
- 然后您需要创建一种方法来更新您的
SVG:path
元素并使用新数据进行缩放
这是一个演示这一点的jsfiddle,每秒钟添加新的随机数据,持续 10 秒。