Javascript 使用JSON数据创建Highcharts热图

Javascript 使用JSON数据创建Highcharts热图,javascript,jquery,json,highcharts,heatmap,Javascript,Jquery,Json,Highcharts,Heatmap,我有JSON数据,想用它创建一个highcharts热图。我不确定如何将JSON数据格式化为所需格式 我的JSON数据: let json = [ { "metric": 4940616.0, "title": "d_revenue", "date": "2020-01-01&qu

我有JSON数据,想用它创建一个highcharts热图。我不确定如何将JSON数据格式化为所需格式

我的JSON数据:

    let json = [
            {
                "metric": 4940616.0,
                "title": "d_revenue",
                "date": "2020-01-01"
            },
            {
                "metric": 5132162.0,
                "title": "p_revenue",
                "date": "2020-02-01"
            },
            {
                "metric": 4954576.0,
                "title": "s_revenue",
                "date": "2020-03-01"
            },
            {
                "metric": 4882217.0,
                "title": "d_revenue",
                "date": "2020-01-01"
            },
            {
                "metric": 4869609.0,
                "title": "t_revenue",
                "date": "2020-03-01"
            },
            {
                "metric": 5075422.0,
                "title": "p_revenue",
                "date": "2020-04-01"
            },
            {
                "metric": 4461996.0,
                "title": "v_revenue",
                "date": "2020-01-01"
            }
        ]
我需要在X轴上显示
日期
,在Y轴上显示
度量

我这样做是为了创建xaxis和yaxis的类别:

var x_cats = [],
y_cats=[],
heat_data=[];
json.forEach(d=>{
    x_cats.push(d.date);
    y_cats.push(d.title);
});
var x_axis = [...new Set(x_cats)];
var y_axis = [...new Set(y_cats)];
我不知道如何创建
数据
,它应该是
[[0,0,-0.7],[1,0,-3.4],[2,0,-1.1]]
(不是来自JSON数据,解释格式)

我不知道如何用上面的JSON数据创建它

这是我的Highcharts代码:

Highcharts.chart('container', {

    chart: {
        type: 'heatmap',
        marginTop: 40,
        marginBottom: 80,
        plotBorderWidth: 1
    },


    title: {
        text: 'Sales per employee per weekday'
    },

    xAxis: {
        categories: x_axis
    },

    yAxis: {
        categories: y_axis,
        title: null,
        reversed: true
    },

    accessibility: {
        point: {
            descriptionFormatter: function (point) {
                var ix = point.index + 1,
                    xName = getPointCategoryName(point, 'x'),
                    yName = getPointCategoryName(point, 'y'),
                    val = point.value;
                return ix + '. ' + xName + ' sales ' + yName + ', ' + val + '.';
            }
        }
    },

    colorAxis: {
        min: 0,
        minColor: '#FFFFFF',
        maxColor: Highcharts.getOptions().colors[0]
    },

    legend: {
        align: 'right',
        layout: 'vertical',
        margin: 0,
        verticalAlign: 'top',
        y: 25,
        symbolHeight: 280
    },

    tooltip: {
        formatter: function () {
            return '<b>' + getPointCategoryName(this.point, 'x') + '</b> sold <br><b>' +
                this.point.value + '</b> items on <br><b>' + getPointCategoryName(this.point, 'y') + '</b>';
        }
    },

    series: [{
        name: 'Sales per employee',
        borderWidth: 1,
        data: FORMATTED_DATA,
        dataLabels: {
            enabled: true,
            color: '#000000'
        }
    }],

    responsive: {
        rules: [{
            condition: {
                maxWidth: 500
            },
            chartOptions: {
                yAxis: {
                    labels: {
                        formatter: function () {
                            return this.value.charAt(0);
                        }
                    }
                }
            }
        }]
    }

});
Highcharts.chart('container'{
图表:{
类型:'热图',
玛金托普:40,
marginBottom:80,
绘图边框宽度:1
},
标题:{
文本:“每个员工每个工作日的销售额”
},
xAxis:{
类别:x_轴
},
亚克斯:{
类别:y_轴,
标题:空,
对
},
可访问性:{
要点:{
descriptionFormatter:函数(点){
var ix=点指数+1,
xName=getPointCategoryName(点,'x'),
yName=getPointCategoryName(点“y”),
val=点值;
返回ix+'.+xName+'销售'+yName+','+val+';
}
}
},
颜色轴:{
分:0,,
minColor:“#FFFFFF”,
maxColor:Highcharts.getOptions().Color[0]
},
图例:{
对齐:“右”,
布局:“垂直”,
保证金:0,
垂直排列:“顶部”,
y:25,
符号高度:280
},
工具提示:{
格式化程序:函数(){
返回''+getPointCategoryName(this.point,'x')+'已售出
'+
'+getPointCategoryName(this.point,'y')+''上的this.point.value+'项; } }, 系列:[{ 名称:“每位员工的销售额”, 边框宽度:1, 数据:格式化的数据, 数据标签:{ 启用:对, 颜色:'#000000' } }], 响应:{ 规则:[{ 条件:{ 最大宽度:500 }, 图表选项:{ 亚克斯:{ 标签:{ 格式化程序:函数(){ 返回此.value.charAt(0); } } } } }] } });

不确定用什么来代替
格式化的\u数据

什么是例外操作?此外,您还需要按日期对它们进行排序,即:日期-
2020-01-01
3个数据在那里,因此您的数据输出将如下所示:
[0,04940616],[0,14461996]…
等等?如您所见,
热图
系列需要以下格式的数据:
[x,y,value]
,老实说,我不确定应该将哪个值指定为
y
,我猜
日期
x