C3.js 绘制 xy 图表,点之间的线连接不正确

C3.js plotting xy chart, line not getting connected properly between points

C3.js 绘制 xy 图表时出现问题。任何帮助将不胜感激。

var T = [];
var F = [];
var n = [];

T.push('T');
F.push('F');

d3.csv("/abc.csv", function(d) {
            {
                True_SJs.push(d[" T"]);
                False_SJs.push(d[" F"]);

            },
            function(error, rows) {
                var chart = c3.generate({
                    bindto: '#roc',
                    data: {
                        x: 'F',
                        columns: [
                            F,
                            T
                        ],
                        order: 'asc',
                        selection: {
                            grouped: true
                        }
                    },
                    zoom: {
                        enabled: true,
                        rescale: true,
                        extent: [1, 10]
                    },
                    tooltip: {
                        format: {
                            title: function(x) {
                                return 'F' + x;
                            }
                        }
                    },
                    grid: {
                        x: {
                            show: true
                        },
                        y: {
                            show: true
                        }
                    }
                });
            });

预期输出应该是从点 4 的顶部开始并连接下一个点的线。 这是示例 http://c3js.org/samples/simple_xy.html

的 link

这是因为您的数据具有重复的 x 值,并且相应的 y 值先升后降。像

 F => ['F', .... 4, 4, 4, ...];
 T => ['T', .... 21, 23, 22, ...];

如果你希望直线是连续的,你可以在F(X)值相等时对T值进行排序。像

// construct an array of arrays - each element contains the T values for an F value
var groupedT = [];
T.forEach(function (e, i) {
    // skip element 0 (the label)
    if (i) {
        groupedT[T[i]] = groupedT[T[i]] || [];
        groupedT[T[i]].push(e);
    }
})
// flattening array of arrays
T = groupedT.reduce(function (a, b) {
    return a.concat(b.sort());
}, ['T']);

在您生成图表之前,我们将为您提供所需的信息。