在单个页面上动态创建的多个 Highchart 图上添加点时,绘图线绘制到起点而不是最后一点?
When adding point on dynamically created Multiple Highchart Graphs on a single page, the plot line draws to the start point instead of last point?
var charts = [];
// change to an empty string to use the global namespace
var getChartConfig = function(renderId, title, data) {
var config = {};
config.chart = {
renderTo: renderId,
type: 'spline',
width: 450,
height: 300
};
config.title = {
text: title
};
config.legend = {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
};
config.yAxis = {
min: 0,
title: {
text: 'watts'
}
};
config.xAxis = {
type: 'datetime'
};
config.tooltip = {
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f} watts</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
};
config.series = [{
name: title,
data: data
}];
return config;
};
$(document).ready(function() {
$.ajax({
url: '/node/watts/data',
success: function(msg) {
var list = $.parseJSON(msg);
$.each(list, function(i, item) {
if (($('#node-' + item.nodeId + '-value').length) == 1)
series = item.data
charts.push(new Highcharts.Chart(
getChartConfig('node-' + item.nodeId + '-chart', item.name, series)
))
});
}
})
var i = 0
function socketloop() {
setTimeout(function() {
i = i + 1
requestData();
}, 5000);
}
socketloop();
setInterval(socketloop, 5000)
});
function requestData() {
$.ajax({
url: '/node/watts/test/2',
success: function(point) {
var myObject = JSON.parse(point);
console.log("============= " + myObject)
$.each(myObject, function(i, item) {
for (x = 0; x < charts.length; x++) {
if (charts[x].series[0].name == item.name) {
console.log("============= " + item.data)
shift = charts[x].series[0].data.length > 20; // shift if the series is
charts[x].series[0].addPoint(item.data, true, shift);
}
}
});
cache: false
}
});
}
我有两个 ajax 请求请求过去的数据,第二个 ajax 检索最新点。
Json 由数据时间和瓦特值组成。具有多个 json objects,由每个 node-ID、名称和数据(时间日期和值)组成。
当它检索过去的数据时,它会使用系列中的数据创建一个图表,并通过帮助程序分配元素 ID、标题和数据 "getChartConfig",然后将该图表推送到图表数组。
这呈现得很好,但暂时没有显示在工具提示中。
但它调用函数 requestdata() 获取最新日期时间和瓦特值的 JSON。我解析 json 并调用函数 addpoint 的系列,在这种情况下我发送的数据是 item.data,(因为我迭代解析的 Json 数组。
这是添加点的时间,当线从历史数据的起点而不是历史数据的终点绘制时。
好像没有看到之前的数据。
任何建议都非常适用,例如如何从现有数据的最后一个点绘制添加点。
确保您的数据按 x 升序排序。
var charts = [];
// change to an empty string to use the global namespace
var getChartConfig = function(renderId, title, data) {
var config = {};
config.chart = {
renderTo: renderId,
type: 'spline',
width: 450,
height: 300
};
config.title = {
text: title
};
config.legend = {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
};
config.yAxis = {
min: 0,
title: {
text: 'watts'
}
};
config.xAxis = {
type: 'datetime'
};
config.tooltip = {
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f} watts</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
};
config.series = [{
name: title,
data: data
}];
return config;
};
$(document).ready(function() {
$.ajax({
url: '/node/watts/data',
success: function(msg) {
var list = $.parseJSON(msg);
$.each(list, function(i, item) {
if (($('#node-' + item.nodeId + '-value').length) == 1)
series = item.data
charts.push(new Highcharts.Chart(
getChartConfig('node-' + item.nodeId + '-chart', item.name, series)
))
});
}
})
var i = 0
function socketloop() {
setTimeout(function() {
i = i + 1
requestData();
}, 5000);
}
socketloop();
setInterval(socketloop, 5000)
});
function requestData() {
$.ajax({
url: '/node/watts/test/2',
success: function(point) {
var myObject = JSON.parse(point);
console.log("============= " + myObject)
$.each(myObject, function(i, item) {
for (x = 0; x < charts.length; x++) {
if (charts[x].series[0].name == item.name) {
console.log("============= " + item.data)
shift = charts[x].series[0].data.length > 20; // shift if the series is
charts[x].series[0].addPoint(item.data, true, shift);
}
}
});
cache: false
}
});
}
我有两个 ajax 请求请求过去的数据,第二个 ajax 检索最新点。 Json 由数据时间和瓦特值组成。具有多个 json objects,由每个 node-ID、名称和数据(时间日期和值)组成。
当它检索过去的数据时,它会使用系列中的数据创建一个图表,并通过帮助程序分配元素 ID、标题和数据 "getChartConfig",然后将该图表推送到图表数组。
这呈现得很好,但暂时没有显示在工具提示中。
这是添加点的时间,当线从历史数据的起点而不是历史数据的终点绘制时。
任何建议都非常适用,例如如何从现有数据的最后一个点绘制添加点。
确保您的数据按 x 升序排序。