Javascript 使用JSON数据创建Highcharts热图
我有JSON数据,想用它创建一个highcharts热图。我不确定如何将JSON数据格式化为所需格式 我的JSON数据: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
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
。