Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3折线图在最大值处给出错误值_Javascript_D3.js - Fatal编程技术网

Javascript D3折线图在最大值处给出错误值

Javascript D3折线图在最大值处给出错误值,javascript,d3.js,Javascript,D3.js,我有一个数字数组,顺序从15上升到20,然后下降到16。从15到19,它们都在图表中显示正确的位置,但一旦后续数字降低,它将显示错误的值 下面是一个示例,正如您所看到的,当x轴位于5,而大约为19.7ish时,它不会达到20: 有人知道问题是什么吗 谢谢,这是因为你正在使用“基本”插值,它使用贝塔样条曲线平滑极端峰值,这就是你所看到的 使用“线性”可以使用直线而不是曲线 var lineGen = d3.svg.line()

我有一个数字数组,顺序从15上升到20,然后下降到16。从15到19,它们都在图表中显示正确的位置,但一旦后续数字降低,它将显示错误的值

下面是一个示例,正如您所看到的,当x轴位于5,而大约为19.7ish时,它不会达到20:

有人知道问题是什么吗


谢谢,这是因为你正在使用“基本”插值,它使用贝塔样条曲线平滑极端峰值,这就是你所看到的

使用“线性”可以使用直线而不是曲线

                var lineGen = d3.svg.line()
                    .x(function(d) {
                        return xScale(d.time);
                    })
                    .y(function(d) {
                        return yScale(d.price);
                    })
                    .interpolate("linear");

感谢您的回复,并帮助我了解此问题与插值有关!我想,在不平滑极端峰值的情况下实现平滑曲线是很困难的?我能看到的唯一选择是单调,根据设计,它不能完全满足我的标准。你可以尝试使用“基数”,这意味着曲线将通过你的每个点,但代价是稍微不那么“连续”,虽然它在数学上仍然是连续的,因为每个点的一阶导数在点的两边都是相同的。这个网站给出了各种不同类型的例子:基数绝对是最好的选择。再次感谢:)