Javascript C3.js“;未捕获错误:源数据在(1844)处缺少组件&引用;

Javascript C3.js“;未捕获错误:源数据在(1844)处缺少组件&引用;,javascript,node.js,plot,electron,c3.js,Javascript,Node.js,Plot,Electron,C3.js,我正在使用C3.js和Electron(AtomShell)制作一个用于数据可视化的桌面应用程序。我无法将数据输入C3。我有一个包含所有坐标的DataArray:DataAray=[[x1,y1],[x2,y2],[x3,y3],…]。 我使用以下代码将其分解为扩展数据数组和yData数组: xData = []; yData=[]; xData.push('data1_x'); yData.push('data1'); for (var i = 0; i < DataArray.leng

我正在使用C3.js和Electron(AtomShell)制作一个用于数据可视化的桌面应用程序。我无法将数据输入C3。我有一个包含所有坐标的DataArray:DataAray=[[x1,y1],[x2,y2],[x3,y3],…]。 我使用以下代码将其分解为扩展数据数组和yData数组:

xData = [];
yData=[];
xData.push('data1_x');
yData.push('data1');
for (var i = 0; i < DataArray.length ; i++){
         xData.push (DataArray[i][0]);
         yData.push (DataArray[i][1]);
                }
var chart = c3.generate({
            bindto: '#chart',
            data: {
                xs: {
                    data1: 'data1_x',

                },
              columns: [
                        x,
                        y
                          ],
                type: 'scatter'
                        }
                    });
扩展数据=[]; yData=[]; 扩展数据推送('data1_x'); yData.push('data1'); 对于(var i=0;i 但是,当我运行应用程序时,会出现以下错误: “未捕获错误:源数据在(1844)!”处缺少组件,源:PATH/To/c3-0.4.10/c3.min.js(2)

这张图根本就没有画出来。如果我将for循环更改为

for (var i = 0; i < 843 ; i++)
for(变量i=0;i<843;i++)
然而,它确实绘制了图形。
我以前使用过Plotly,我曾经运行完全相同的代码为Plotly准备数据,它工作得很好。这里有什么问题?还有,有没有办法让C3忽略数据中的错误?例如,如果其中一个点上有一个空值,C3是否有办法绘制图形

我不知道是否有办法将C3配置为忽略空值或未定义的值。尝试忽略空值/未定义值,以便C3可以绘制图形

for (var i = 0; i < DataArray.length ; i++) {
     // if the value is not undefined or null, push to array
     if (DataArray[i][0] !== undefined && DataArray[i][0] !== null) {
         xData.push (DataArray[i][0]);
     } else {
         // push 0 to signify no data
         xData.push(0);
     }
     ...
}
for(变量i=0;i
C3将忽略空值。但当值未定义时,将出现此错误。TonalLynx的答案会有用的。或者可以将未定义的值更改为null

for (var i = 0; i < DataArray.length ; i++) {
 // if the value is undefined, push null to array
 if (DataArray[i][0] === undefined) {
     xData.push (null);
 } else {
     xData.push (DataArray[i][0]);
 }
 ...
}
for(变量i=0;i
c3有一个内部功能可以帮助实现这一点

c3_chart_internal_fn.convertColumnsToData = function (columns) {
    var new_rows = [], i, j, key;
    for (i = 0; i < columns.length; i++) {
        key = columns[i][0];
        for (j = 1; j < columns[i].length; j++) {
            if (isUndefined(new_rows[j - 1])) {
                new_rows[j - 1] = {};
            }
            if (isUndefined(columns[i][j])) {
                throw new Error("Source data is missing a component at (" + i + "," + j + ")!");
            }
            new_rows[j - 1][key] = columns[i][j];
        }
    }
    return new_rows;
};
c3\u图表\u内部\u fn.convertColumnsToData=函数(列){
var new_rows=[],i,j,key;
对于(i=0;i