我不知道我在这段代码中哪里出错了。
我需要做的是使用数据库中的值绘制 HighCharts。这些值可能随时更改。
- x 轴应标记为“11 月 30 日”作为最后一个点到“10 月 30 日”作为第一个点,这意味着 30 天(我只想在 30 天显示图表)。这是一个示例,日期可能随时间变化。- JS通过ajax发送请求,结果以json格式返回。这是其中一行:{"time":"2012-08-07 21:15:05","value_1":"1.241110","value_2":"1.241103"}
该图有两条线( value_1 和 value_2 )并且都对应于 x 轴上的相同时间。
我在某处读到我必须将日期格式转换为 UTC。这是功能
function get_and_display_data(symbol_1,price_1,period_1,bars_1,constraints_1){
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
var options = {
chart: {
renderTo: 'graph',
type: 'line',
marginRight: 130,
marginBottom: 25,
reflow: false,
borderWidth: 0
},
title: {
text: 'Data',
x: -20 //center
},
xAxis: {
type:'datetime',
dateTimeLabelFormats: {
year: '%b \'%y'
}
},
yAxis: {
title: {
text: 'This is a text !'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat ('%A, %b %e, %Y', this.point.x) +': '+ this.y;
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 100,
borderWidth: 0
},
plotOptions: {
series: {
marker: {
enabled: false,
states: {
hover: {
enabled: true,
radius: 3
}
}
}
}
},
series: [{
name: ''
}, {
name: ''
}]
}
$.ajax({
url: url_base+"show_page/graph_data.do",
type: 'POST',
data: 'symbol='+symbol_1+"&price="+price_1+"&period="+period_1+"&bars="+bars_1+"&constraints="+constraints_1,
cache: false,
dataType: "json",
success: function(html) {
var data_array = [];
var data_1 = [];
var data_2 = [];
var i = 0;
var time_x_axis = [];
var sLegend = [];
try{
data_array = html;
sLegend = price_1.split(',');
if(html == null){
alert('No data was found. Try it again ');
}else{
for(i=0;i<data_array.length;i++)
{
time_x_axis[i] = data_array[i]['time'];
data_1[i] = '['+Date.UTC(time_x_axis[i].substr(0, 4), time_x_axis[i].substr(5,2), time_x_axis[i].substr(8,2), time_x_axis[i].substr(11,2), time_x_axis[i].substr(14,2), time_x_axis[i].substr(17,2))+','+parseFloat(data_array[i]['value_1'])+']';
data_2[i] = '['+Date.UTC(time_x_axis[i].substr(0, 4), time_x_axis[i].substr(5,2), time_x_axis[i].substr(8,2), time_x_axis[i].substr(11,2), time_x_axis[i].substr(14,2), time_x_axis[i].substr(17,2))+','+parseFloat(data_array[i]['value_2'])+']';
}
}
}catch(e){ }
options.series[0].data = '['+data_1+']';
options.series[0].name = sLegend[1];
options.series[1].data = data_2;
options.series[1].name = sLegend[2];
chart = new Highcharts.Chart(options);
}
});}
在这里,我得到了 html 变量的结果并将它们影响到 Data_array[] 。因为系列数据的格式应该是Data:[[],[],[]..[]],所以我把 *options.series[0].data = '['+data_1+']'; * .
对于 *data_1[i]*,我必须减去时间以获取年、月、日、小时、分钟和秒。
我在代码中缺少什么?