我使用Highcharts专门用于某些图表Spline with plot bands。可以找到关联的jsfiddle here。
$(function () {
$('#container').highcharts({
chart: {
type: 'spline'
},
title: {
text: 'Wind speed during two days'
},
subtitle: {
text: 'May 31 and and June 1, 2015 at two locations in Vik i Sogn, Norway'
},
xAxis: {
type: 'datetime',
labels: {
overflow: 'justify'
}
},
yAxis: {
title: {
text: 'Wind speed (m/s)'
},
minorGridLineWidth: 0,
gridLineWidth: 0,
alternateGridColor: null,
plotBands: [{ // Light air
from: 0.3,
to: 1.5,
color: 'rgba(68, 170, 213, 0.1)',
label: {
text: 'Light air',
style: {
color: '#606060'
}
}
}, { // Light breeze
from: 1.5,
to: 3.3,
color: 'rgba(0, 0, 0, 0)',
label: {
text: 'Light breeze',
style: {
color: '#606060'
}
}
}, { // Gentle breeze
from: 3.3,
to: 5.5,
color: 'rgba(68, 170, 213, 0.1)',
label: {
text: 'Gentle breeze',
style: {
color: '#606060'
}
}
}, { // Moderate breeze
from: 5.5,
to: 8,
color: 'rgba(0, 0, 0, 0)',
label: {
text: 'Moderate breeze',
style: {
color: '#606060'
}
}
}, { // Fresh breeze
from: 8,
to: 11,
color: 'rgba(68, 170, 213, 0.1)',
label: {
text: 'Fresh breeze',
style: {
color: '#606060'
}
}
}, { // Strong breeze
from: 11,
to: 14,
color: 'rgba(0, 0, 0, 0)',
label: {
text: 'Strong breeze',
style: {
color: '#606060'
}
}
}, { // High wind
from: 14,
to: 15,
color: 'rgba(68, 170, 213, 0.1)',
label: {
text: 'High wind',
style: {
color: '#606060'
}
}
}]
},
tooltip: {
valueSuffix: ' m/s'
},
plotOptions: {
spline: {
lineWidth: 4,
states: {
hover: {
lineWidth: 5
}
},
marker: {
enabled: false
},
pointInterval: 3600000, // one hour
pointStart: Date.UTC(2015, 4, 31, 0, 0, 0)
}
},
series: [{
name: 'Hestavollane',
data: [0.2, 0.8, 0.8, 0.8, 1, 1.3, 1.5, 2.9, 1.9, 2.6, 1.6, 3, 4, 3.6, 4.5, 4.2, 4.5, 4.5, 4, 3.1, 2.7, 4, 2.7, 2.3, 2.3, 4.1, 7.7, 7.1, 5.6, 6.1, 5.8, 8.6, 7.2, 9, 10.9, 11.5, 11.6, 11.1, 12, 12.3, 10.7, 9.4, 9.8, 9.6, 9.8, 9.5, 8.5, 7.4, 7.6]
}, {
name: 'Vik',
data: [0, 0, 0.6, 0.9, 0.8, 0.2, 0, 0, 0, 0.1, 0.6, 0.7, 0.8, 0.6, 0.2, 0, 0.1, 0.3, 0.3, 0, 0.1, 0, 0, 0, 0.2, 0.1, 0, 0.3, 0, 0.1, 0.2, 0.1, 0.3, 0.3, 0, 3.1, 3.1, 2.5, 1.5, 1.9, 2.1, 1, 2.3, 1.9, 1.2, 0.7, 1.3, 0.4, 0.3]
}],
navigation: {
menuItemStyle: {
fontSize: '10px'
}
}
});
});
我需要图表显示时间而不是时间--50分钟(以分钟为间隔)。也就是说,最正确的数据点是时间=现在,最左边的时间是50分钟。
添加样条数据不是问题,但我无法为xAxis添加正确的数据。
我所拥有的日期数据以毫秒为单位(1456783080016000),但考虑到xAxis必须更新这个图表的最佳方法是什么才能进入图表。
我见过的代码显示您可以像这样更新它:
Highcharts.charts[0].xAxis[0].update({categories:['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']}, true);
如何将日期日期添加到此更新?
我的第二部分是这个问题的作用 pointInterval& pointStart。
我假设pointInterval是一分钟或(60000ms),点pointStart: Math.abs(new Date().getTime() - 3000000)
现在是时间减去50分钟(3000000ms)。
这似乎不起作用所以任何建议都值得赞赏。
答案 0 :(得分:1)
我会使用xAxis.tickPositioner
和xAxis.labels.formatter
来获得所需的结果。片段:
xAxis: {
type: 'datetime',
tickInterval: 600000, // get every 10th tick
tickPositioner: function (min, max) {
var ticks = [],
interval = this.tickInterval;
while (max >= min) {
ticks.push(max);
max -= interval;
}
return ticks.reverse();
},
labels: {
formatter: function() {
var max = this.axis.max,
diff = max - this.value;
if (diff === 0) {
return 'Now';
}
return '-' + Highcharts.dateFormat('%M', diff) + 'mins';
}
}
},
现场演示:http://jsfiddle.net/tdmjm9pn/1/
如果不清楚,请告诉我。
答案 1 :(得分:0)
你可以尝试类似以下的内容
$(function() {
$('#container').highcharts({
xAxis: {
categories: [1373155200000, 1373241600000, 1373328000000, 1373414400000, 1373500800000, 1373587200000, 1373673600000, 1373760000000, 1373846400000, 1373932800000, 1374019200000, 1374105600000],
type: 'datetime',
labels: {
formatter: function() {
var d = new Date(this.value);
return d.toDateString();
}
}
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
});