Highcharts/Highstocks:如何手动设置X轴范围
Highcharts/Highstocks: How to manually set the X-axis range
我正在尝试手动设置 x 轴范围。所以,我的 x 轴需要采用小时/分钟的格式,并且应该是从 0 小时到 48 小时,每个刻度增加 15 分钟,这样它就是 0, 15 , 30, 45, 1:00 , 1:15, 1:30, 1:45, 2:00..... 至 48:00
我不确定该怎么做,我正在从外部 Json 文件中提取数据。
在我的JavaScript中,这是我的
$(function () {
$.getJSON('JsonFile.json', function (data) {
var processedData = [];
Highcharts.each(data, function (d) {
processedData.push(d.X);
});
// Create the chart
$('#container').highcharts('StockChart', {
rangeSelector: {
selected: 1
},
title: {
text: 'X'
},
series: [{
data: processedData,
pointStart: Date.UTC(2010, 1, 1),
pointInterval: 1000 * 60 * 15 // Every 15 minute. 1000 miliseconds in 1 second, 60 seconds for 1 minute.
}],
xAxis: {
floor: 0,
ceiling: 1000 * 60 * 60 * 48,
type: 'datetime',
dateTimeLabelFormats: {
hour: '%H:%M'
}
}
});
});
});
现在的样子,它不画图,给我一个空图,如图
enter image description here
更新 2
我更新了 fiddle 以在 48 小时的时间跨度内传播任意数量的数据点。要每 15 分钟放置一个刻度标签,您可以将 tickInterval: 1000*60*15
添加到 xAxis 选项。但是,如果没有足够的 space 可用,Highcharts 将不会呈现所有标签(即使如此,指定此设置可能会非常混乱,请自行查看。)
详情见updated fiddle。
别忘了查看 HighCharts Documentation and API Reference,它们会很有帮助:-)
您可以使用xAxis.labels.formatter
,例如:http://jsfiddle.net/cgoz4shr/1/
xAxis: {
type: 'datetime',
labels: {
formatter: function(){
var minutes = Highcharts.dateFormat('%M', this.value),
days = parseInt(Highcharts.dateFormat('%d', this.value)) - 1,
hours = days * 24 + parseInt(Highcharts.dateFormat('%H', this.value));
return hours + ':' + minutes;
}
}
}
当然你可以修改返回的内容,比如你可以去掉hours
if hours == 0
等
我正在尝试手动设置 x 轴范围。所以,我的 x 轴需要采用小时/分钟的格式,并且应该是从 0 小时到 48 小时,每个刻度增加 15 分钟,这样它就是 0, 15 , 30, 45, 1:00 , 1:15, 1:30, 1:45, 2:00..... 至 48:00
我不确定该怎么做,我正在从外部 Json 文件中提取数据。
在我的JavaScript中,这是我的
$(function () {
$.getJSON('JsonFile.json', function (data) {
var processedData = [];
Highcharts.each(data, function (d) {
processedData.push(d.X);
});
// Create the chart
$('#container').highcharts('StockChart', {
rangeSelector: {
selected: 1
},
title: {
text: 'X'
},
series: [{
data: processedData,
pointStart: Date.UTC(2010, 1, 1),
pointInterval: 1000 * 60 * 15 // Every 15 minute. 1000 miliseconds in 1 second, 60 seconds for 1 minute.
}],
xAxis: {
floor: 0,
ceiling: 1000 * 60 * 60 * 48,
type: 'datetime',
dateTimeLabelFormats: {
hour: '%H:%M'
}
}
});
});
});
现在的样子,它不画图,给我一个空图,如图 enter image description here
更新 2
我更新了 fiddle 以在 48 小时的时间跨度内传播任意数量的数据点。要每 15 分钟放置一个刻度标签,您可以将 tickInterval: 1000*60*15
添加到 xAxis 选项。但是,如果没有足够的 space 可用,Highcharts 将不会呈现所有标签(即使如此,指定此设置可能会非常混乱,请自行查看。)
详情见updated fiddle。
别忘了查看 HighCharts Documentation and API Reference,它们会很有帮助:-)
您可以使用xAxis.labels.formatter
,例如:http://jsfiddle.net/cgoz4shr/1/
xAxis: {
type: 'datetime',
labels: {
formatter: function(){
var minutes = Highcharts.dateFormat('%M', this.value),
days = parseInt(Highcharts.dateFormat('%d', this.value)) - 1,
hours = days * 24 + parseInt(Highcharts.dateFormat('%H', this.value));
return hours + ':' + minutes;
}
}
}
当然你可以修改返回的内容,比如你可以去掉hours
if hours == 0
等