D3.js 基于假'创建DC线形图(或序列图);预测';团体

D3.js 基于假'创建DC线形图(或序列图);预测';团体,d3.js,fft,prediction,dc.js,crossfilter,D3.js,Fft,Prediction,Dc.js,Crossfilter,我正在尝试使用该页面中描述的库fft.js(法语)将预测函数转换为dc线形图或序列图,并以highchart为例进行渲染 我将维度组传递到函数中的第一步是仅将值转换为数组(可能存在更好的方法) 维度组如前所示: (12) […] ​ 0: Object { key: 1, value: 703 } ​ 1: Object { key: 40, value: 203 } ​ 2: Object { key: 41, value: 309 } ​ 3: Object { key: 42, valu

我正在尝试使用该页面中描述的库fft.js(法语)将预测函数转换为dc线形图或序列图,并以highchart为例进行渲染

我将维度组传递到函数中的第一步是仅将值转换为数组(可能存在更好的方法)

维度组如前所示:

(12) […]
​
0: Object { key: 1, value: 703 }
​
1: Object { key: 40, value: 203 }
​
2: Object { key: 41, value: 309 }
​
3: Object { key: 42, value: 166 }
​
4: Object { key: 43, value: 193 }
​
5: Object { key: 44, value: 166 }
​
6: Object { key: 45, value: 218 }
​
7: Object { key: 46, value: 159 }
​
8: Object { key: 47, value: 200 }
​
9: Object { key: 48, value: 203 }
​
10: Object { key: 49, value: 239 }
​
11: Object { key: 50, value: 161 }
​
length: 12
进入预测功能后:

const result = prediction.map(function (x) {
                    return parseInt(x, 10);
                });
                console.log(result)
(15) […]
​
0: 202
​
1: 308
​
2: 166
​
3: 193
​
4: 165
​
5: 218
​
6: 159
​
7: 200
​
8: 203
​
9: 239
​
10: 161
​
11: 165
​
12: 271
​
13: 128
​
14: 155
​
length: 15
现在,因为我是javascript的初学者,我不知道如何将数组返回到一个伪组中,看起来像原始组,并添加了数据

​这是我需要的阵列。所有伪造组:

0: Object { key: 40, value: 202 } // New predicted value
​
1: Object { key: 41, value: 308 }
​
2: Object { key: 42, value: 166 }
​
3: Object { key: 43, value: 193 }
​
4: Object { key: 44, value: 165 }
​
5: Object { key: 45, value: 218 }
​
6: Object { key: 46, value: 159 }
​
7: Object { key: 47, value: 200 }
​
8: Object { key: 48, value: 203 }
​
9: Object { key: 49, value: 239 }
​
10: Object { key: 50, value: 161 }

11: Object { key: 51, value: 165 }

12: Object { key: 52, value: 271 }

13: Object { key: 1, value: 128} // Need restart at 1 because it's the WeekOfYear

14: Object { key: 2, value: 155}
​
length: 15
试图理解这些答案中描述的方法,但我认为它不适合我的问题:

谢谢你的帮助

编辑1:

这是我目前找到的解决方案,但我认为它根本没有经过优化,但它在一定程度上达到了预期的效果

function fakepredict(donnee, horizon, nb_harmonique){

    return {
            all: function () {
                var a = donnee.all();
                datav = new Array();
                datax = new Array();

                for (var i = 1; i < a.length; i++) {
                    x = a[i].value
                    datav.push(x)
                };

                var datav = predict(datav, horizon, nb_harmonique);
                var first = a[1].key;
                var ln = datav.length;
                for (var i = 0; i < ln; i++) {
                    k = i + first;
                // if (k > 52){k = (i + horizon) - (ln + 1)};
                    var kv = { key: k, value: datav[i] };
                    datax.push(kv);
                };


               console.log(datax);

                return datax;

                        }
                   };
              }

function fakepredict(唐尼、地平线、nb_harmonique){
返回{
全部:函数(){
var a=donnee.all();
datav=新数组();
datax=新数组();
对于(变量i=1;i52){k=(i+horizon)-(ln+1)};
var-kv={key:k,value:datav[i]};
数据x.推力(千伏);
};
console.log(datax);
返回datax;
}
};
}


我深入地回答了这个问题,然后发现我无法解释您原来的组-为什么它从键1开始,然后跳到40,运行到50,然后停止?即使它不正常,我也很难理解——第51周和第52周是否缺失?这需要更多的学习,但在处理日期时,通常最好使用日期刻度-每个键都是一个完整的年份日期,然后如果你想要的话,你可以只打印周数,但你不必担心包装或重叠。创建一个假组很容易,将数组值映射回组值并不难,但我担心原始数据可能会出现问题,在这种情况下,结果将毫无意义。您好,Gordon,是的,数据表示转换为周的日期。每个项目都对应一张独特的“票证”,上面有开张日期和截止日期。为此,我导入了两个csv文件,第一个文件包括带开放日期的门票,并且在过去10周内已关闭。第二个包括没有截止日期的开放票(我需要它们来显示另一个图表)。我想要预测的组的大小是所有票证都已关闭,只有当交叉过滤器没有找到关闭日期时,它才会将它们放在第一个键(0:Object{key:1,value:703})中。因此,我认为我应该通过一个伪组将其过滤到上游,但我还没有解决方案,空垃圾桶不起作用。我对我的假“预测”组的编程进行了改进,我通过编辑更新了问题。我深入回答了这个问题,然后发现我无法解释你原来的组-为什么它从键1开始,然后跳到40,运行到50,然后停止?即使它不正常,我也很难理解——第51周和第52周是否缺失?这需要更多的学习,但在处理日期时,通常最好使用日期刻度-每个键都是一个完整的年份日期,然后如果你想要的话,你可以只打印周数,但你不必担心包装或重叠。创建一个假组很容易,将数组值映射回组值并不难,但我担心原始数据可能会出现问题,在这种情况下,结果将毫无意义。您好,Gordon,是的,数据表示转换为周的日期。每个项目都对应一张独特的“票证”,上面有开张日期和截止日期。为此,我导入了两个csv文件,第一个文件包括带开放日期的门票,并且在过去10周内已关闭。第二个包括没有截止日期的开放票(我需要它们来显示另一个图表)。我想要预测的组的大小是所有票证都已关闭,只有当交叉过滤器没有找到关闭日期时,它才会将它们放在第一个键(0:Object{key:1,value:703})中。因此,我认为我应该通过一个伪组将其过滤到上游,但我还没有解决方案,空箱子没用。我在我的假“预测”小组的编程上取得了进步,我通过编辑更新了问题
0: Object { key: 40, value: 202 } // New predicted value
​
1: Object { key: 41, value: 308 }
​
2: Object { key: 42, value: 166 }
​
3: Object { key: 43, value: 193 }
​
4: Object { key: 44, value: 165 }
​
5: Object { key: 45, value: 218 }
​
6: Object { key: 46, value: 159 }
​
7: Object { key: 47, value: 200 }
​
8: Object { key: 48, value: 203 }
​
9: Object { key: 49, value: 239 }
​
10: Object { key: 50, value: 161 }

11: Object { key: 51, value: 165 }

12: Object { key: 52, value: 271 }

13: Object { key: 1, value: 128} // Need restart at 1 because it's the WeekOfYear

14: Object { key: 2, value: 155}
​
length: 15
function fakepredict(donnee, horizon, nb_harmonique){

    return {
            all: function () {
                var a = donnee.all();
                datav = new Array();
                datax = new Array();

                for (var i = 1; i < a.length; i++) {
                    x = a[i].value
                    datav.push(x)
                };

                var datav = predict(datav, horizon, nb_harmonique);
                var first = a[1].key;
                var ln = datav.length;
                for (var i = 0; i < ln; i++) {
                    k = i + first;
                // if (k > 52){k = (i + horizon) - (ln + 1)};
                    var kv = { key: k, value: datav[i] };
                    datax.push(kv);
                };


               console.log(datax);

                return datax;

                        }
                   };
              }