Javascript 样条曲线图中类别中的多个数据

Javascript 样条曲线图中类别中的多个数据,javascript,highcharts,Javascript,Highcharts,我想画一幅下图 因此,我尝试在条形图中设置数据时插入数据,但失败。 我用了两种方法 一个 // data: [YYYYMMDDhhmm, value] const sampleData = [[201906281815, 1], [201906281815, 4], [201906281815, 2], [201906281830, 10], [201906281830, 7], [201906281830, 15], [201906281845, 11], [201906281845,

我想画一幅下图

因此,我尝试在条形图中设置数据时插入数据,但失败。
我用了两种方法

一个

// data: [YYYYMMDDhhmm, value]  
const sampleData = [[201906281815, 1], [201906281815, 4], [201906281815, 2], [201906281830, 10], [201906281830, 7], [201906281830, 15], [201906281845, 11], [201906281845, 8], [201906281845, 22]];
chart.series[0].setData(sampleData);
在第一种情况下,绘制了图表,但同一时区的数据重叠。
时间已成功插入xAxis

两个

在xAxis中正确插入了时间,但未绘制样条曲线


如何创建像我要插入数据的图片那样的图表?

您可以对数据进行预处理,以计算
xAxis上的准确
x
位置:

var sampleData = [
        [201906281815, 1],
        [201906281815, 4],
        [201906281830, 10],
        [201906281830, 7],
        [201906281830, 15],
        [201906281845, 11],
        [201906281845, 8],
        [201906281845, 22]
    ],
    repeated = 0,
    newData = [],
    xData = 0,
    yIndex = 0,
    step,
    j,
    categories = [];

sampleData.forEach(function(el, i) {
    if (sampleData[i + 1] && sampleData[i + 1][0] === el[0]) {
        repeated++
    } else {
        step = 1 / (repeated + 1);

        for (j = -0.5 + step / 2; j <= 0.5 - step / 2; j += step) {
            newData.push([
                xData + j,
                sampleData[yIndex][1]
            ]);

            yIndex++;
        }
        xData++;
        repeated = 0;
        categories.push(el[0]);
    }
});

Highcharts.chart('container', {
    series: [{
        data: newData
    }],
    xAxis: {
        categories: categories
    }
});
var sampleData=[
[201906281815, 1],
[201906281815, 4],
[201906281830, 10],
[201906281830, 7],
[201906281830, 15],
[201906281845, 11],
[201906281845, 8],
[201906281845, 22]
],
重复=0,
新数据=[],
扩展数据=0,
yIndex=0,
步
J
类别=[];
sampleData.forEach(函数(el,i){
if(sampleData[i+1]&&sampleData[i+1][0]==el[0]){
重复++
}否则{
步骤=1/(重复+1);

对于(j=-0.5+step/2;j我建议您从1970年开始以毫秒为单位将时间转换为时间,并使用highcharts datetime轴。然后您可以在不同的点之间放置实时时间。下面是一个基于您的数据的示例:,但由于您有3个相同但值不同的时间戳,因此它将它们绘制为线。@Ewalden感谢您的帮助。@y我们对我的问题的回答。在我的实际代码(不是示例)中,切换到UTC并将其插入xAxis。并且同一时区中的数据与给我的示例中的数据重叠。我希望以最快的顺序创建具有数组索引的图表,而不重叠数据。
var sampleData = [
        [201906281815, 1],
        [201906281815, 4],
        [201906281830, 10],
        [201906281830, 7],
        [201906281830, 15],
        [201906281845, 11],
        [201906281845, 8],
        [201906281845, 22]
    ],
    repeated = 0,
    newData = [],
    xData = 0,
    yIndex = 0,
    step,
    j,
    categories = [];

sampleData.forEach(function(el, i) {
    if (sampleData[i + 1] && sampleData[i + 1][0] === el[0]) {
        repeated++
    } else {
        step = 1 / (repeated + 1);

        for (j = -0.5 + step / 2; j <= 0.5 - step / 2; j += step) {
            newData.push([
                xData + j,
                sampleData[yIndex][1]
            ]);

            yIndex++;
        }
        xData++;
        repeated = 0;
        categories.push(el[0]);
    }
});

Highcharts.chart('container', {
    series: [{
        data: newData
    }],
    xAxis: {
        categories: categories
    }
});