Javascript c3.js样条曲线时间序列图正在后退

Javascript c3.js样条曲线时间序列图正在后退,javascript,d3.js,curve-fitting,c3.js,spline,Javascript,D3.js,Curve Fitting,C3.js,Spline,我使用c3.js来绘制一些时间序列数据,并且在不需要循环的情况下,由于某种原因,它会到处循环 这是我正在绘制的所有5个图的视图 仔细观察其中一个,我们可以看到它向后循环,即使没有向后的点 我知道这是因为拟合算法,但我不知道如何修复它。除了设置数据和样条曲线,我没有为c3使用任何其他配置 要重现问题并亲自查看,您可以尝试,并用以下代码段替换该代码段: var chart = c3.generate({ data: { columns: [ ['X

我使用c3.js来绘制一些时间序列数据,并且在不需要循环的情况下,由于某种原因,它会到处循环

这是我正在绘制的所有5个图的视图

仔细观察其中一个,我们可以看到它向后循环,即使没有向后的点

我知道这是因为拟合算法,但我不知道如何修复它。除了设置数据和样条曲线,我没有为c3使用任何其他配置

要重现问题并亲自查看,您可以尝试,并用以下代码段替换该代码段:

var chart = c3.generate({
    data: {
        columns: [
            ['X', 1, 2, 3.9, 4, 5, 6],
            ['data1', 30, 200, 100, 400, 15, 250],
            ['data2', 130, 100, 140, 200, 150, 50]
        ],
        x: 'X',
        type: 'spline'
    }
});

我发现这个问题很有趣,所以昨天我给这个问题添加了一个具体的例子,它再现了这个问题,两个连续的点在X轴上非常接近,这会触发c3生成“向后”的样条线

样条曲线插值委托给
d3
,默认为type,但在c3中可以这样更改:

var chart = c3.generate({
    data: {
        columns: [
            ['X', 1, 2, 3.9, 4, 5, 6],
            ['dataA', 30, 200, 100, 401, 15, 250],
            ['dataB', 130, 100, 140, 200, 150, 50]
        ],
        x: 'X',
        type: 'spline'
    },
    spline: {
        interpolation: {
            type: 'basis'
        }
    }
});
有关其他选项,请参见:
“线性”、“线性闭合”、“基础”、“基础打开”、“基础关闭”、“捆绑”、“基数”、“基数打开”、“基数关闭”、“单调”

使用
d3
,为了获得X轴上单调的样条曲线,您需要使用
张力
参数,该参数可以从
0.0
1.0
,默认值为
0.7
(对于X轴上的闭合点,需要接近
1.0
)的高值。请参见,玩
。张力(0.3)
,查看曲线如何变化


不幸的是,
c3
中似乎没有公开这一点。这可能是向他们的GitHub建议的一个有效问题。但这并不容易,因为如果数据在X轴上有不同的步长(如示例中所示),则需要一个非恒定的
张力
,据我所知,这只能通过d3中的自定义插值函数实现(更不可能在c3中公开).

我想我们需要看看我在帖子中说的一个例子,我使用的是基本绘图,没有额外的配置。下面是我的代码:好的,如果Joe Random Helper访问了该链接,他需要在代码片段中做什么才能看到您看到的内容?您可以从第一个图中看到,曲线拟合算法中出现了多个循环。第二张图显示了一个特定绘图中的3个点,这些点没有向后移动,但是,绘图拟合算法在循环中向后移动。我不是要求有人来修复我的代码,我是要求有人知道这个特定的曲线拟合算法是如何工作的,为什么它会向后循环,以及我需要在c3(或d3)中使用什么算法,以便它是通过所有点的平滑曲线,而不是向后循环。我要说的是,如果你能给出一个具体的例子,你会得到更好的帮助。如果没有这一点,这个问题就太模糊了,可能会被打上这样的标签。请阅读和