График времени суток по оси Х
Я пытаюсь сделать высокую карту высокой температуры. Я планирую все покупки за определенное время. У меня есть массив массивов точек данных [[метка времени, сумма покупки],[метка времени, сумма покупки]]. Я хочу, чтобы на моем графике была ось Y, показывающая сумму покупки, и ось X, которая показывает время суток, когда была сделана покупка (все они с 8:00 до 18:00). Не важно, в какую дату совершается покупка, только время. Мне пришлось обмануть и сделать время по оси X линейным и сделать время плавающим, как 10,55 (10:55). Это, очевидно, не очень хорошее решение, поскольку оставляет на графике пробелы (.6-.99). Любая попытка, которую я сделал, кроме линейной, дает мне ось X, показывающую несколько минут с полуночи. Вот мой текущий код с плохой работой вокруг.
function scatterChartTimeMapper(timestamp){
var ourDate = new Date(timestamp*1000);
var hour = (ourDate.getHours()+1).toString();
var mins = ourDate.getMinutes();
if(mins<10)
mins = "0" + mins;
if(mins%10===0)
mins = mins.toString();
var time = hour + "." + mins;
return parseFloat(time);
}
for(i=0;i<data.length;i++)
{
var timePoint = scatterChartTimeMapper(parseFloat(data[i].trim()));
var segmentArray = [timePoint,parseFloat(data[i+1].trim())];
newArray.push(segmentArray);
i++;
}
Мой JSON для графика: data:
{
chart: {
type: 'scatter',
backgroundColor : 'transparent',
zoomType: 'xy'
},
title: {
text: bundle.action_fields_full.chart_title
},
subtitle: {
text: bundle.action_fields_full.sub_title
},
xAxis: {
title: {
enabled: true,
text: 'Time Of Day'
},
type : 'linear',
startOnTick: true,
endOnTick: true,
showLastLabel: true
},
yAxis: {
title: {
text: 'Tranaction Amount'
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 55,
floating: true,
backgroundColor: '#FFFFFF',
borderWidth: 1
},
plotOptions: {
scatter: {
marker: {
radius: 5,
states: {
hover: {
enabled: true,
lineColor: 'rgb(100,100,100)'
}
}
},
states: {
hover: {
marker: {
enabled: false
}
}
},
tooltip: {
headerFormat: '<b>{series.name}</b><br>',
pointFormat: 'Time {point.x} , €{point.y} '
}
}
},
series: [{
name: 'Transactions',
color: 'rgba(223, 83, 83, .5)',
data: newArray
}]
} };