addpoint ist nicht Punkt hinzufügen in highcharts ,wo die Daten aktualisiert werden dynamisch mit ajax
meine Aufgabe ist das hinzufügen von mehreren Serie-dynamisch und Updates-Serie die Daten dynamisch.
meine Daten werden geladen mit ajax-request.
habe ich die Logik auf highcharts Seite zu aktualisieren, die Daten dynamisch. aber addpoint ist nicht, neue Punkte auf die Reihe weiß nicht, warum, wenn ich überprüft die Serie Objekt, es hat die Daten aber dirtyfiled auf true gesetzt ist (weiß nicht den Grund)
unten angegebenen code wird verwendet, um Daten zu laden, dynamisch. hier problem ist, Punkt hinzufügen, es ist nicht das hinzufügen von Daten zur Grafik.
Serie Objekt zeigt isDirty :true
isDirtyData:true.
ich denke, das isDirty hat etwas zu beschäftigen. bitte helfen Sie mir. mit diesem problem konfrontiert, für eine ziemlich lange Zeit .
from_date=new Date().getTime()-60000;
function requestData ()
{
console.log("into request data")
console.log(TypeOfParameter,sub_type,sub_type_parameter,hostname,from_date)
$.ajax({
url:serverUrl+'/api/fetch_params/',
type:'GET',
data:{'type':TypeOfParameter,'sub-type':sub_type,'hostname':hostname,'param':sub_type_parameter,'from-date':from_date},
success:function(response)
{
console.log("into success")
var id=sub_type+sub_type_parameter
var series = chart.get(id)
shift = series.data.length > 150; //shift if the series is longer than 300 (drop oldest point)
console.log(shift)
response= $.parseJSON(response)
var x=sub_type;
all_data=response.response.data[x]
itemdata=[]//
console.log(all_data.length)
//console.log(new Date(all_data[all_data.length-1][0]),'latest timestamp')
from_date=all_data[all_data.length-1][0]
// series.addPoint(all_data,false,shift);
console.log("series name:",series.data.length,series.name)
for (var i = 0; i < all_data.length; i++)
{
console.log(all_data[i][0],all_data[i][1]);
series.addPoint({ x: all_data[i][0],y: all_data[i][1],id: i},false,shift);
}
console.log(series,"object")
console.log("hey",series.data.length)
console.log("hey",series.data.length )
console.log(series.data)
console.log("out of success")
//chart.redraw();
setTimeout(requestData, 60000);
},
cache:false,
error:function()
{
console.log("err")
}
});
console.log("out of request ")
}
unten functin wird verwendet, um zu zeichnen, highchart,hier onload-Ereignis wird verwendet, um Daten zu laden, dynamisch.
$(function (
) {
console.log("into highcharts")
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
defaultSeriesType: 'spline',
events: {
load: requestData
}
},
title: {
text: 'cpu Usage'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 150,
maxZoom: 20 * 1000
},
yAxis: {
minPadding: 0.2,
maxPadding: 0.2,
title: {
text: 'Value',
margin: 80
}
},
series: [{
id:sub_type+sub_type_parameter,
name: 'CPU',
data: []
}]
});;
console.log("out of highcharts")
});
chart = $('#container').highcharts();
dies ist der code zum hinzufügen einer Achse dynamisch.
var flag=true
if(TypeOfParameter=='cpu'&&flag)
{
console.log("entering into cpu",sub_type,flag)
// all_data = response.response.data[sub_type]
// itemdata=[]
// for(i in all_data)
// {
// itemdata.push(all_data[i][1])
// }
// console.log(itemdata[0])
// console.log("Drawing trend")
chart.addAxis({ //Primary yAxis
id:'Cpu_axis'+sub_type_parameter,
labels: {
formatter: function() {
return this.value;
},
style: {
color: '#89A54E'
}
},
title: {
text: "core "+ sub_type+ " "+sub_type_parameter,
style: {
color: '#89A54E'
}
},
lineWidth: 1,
lineColor: '#08F'
});
chart.addSeries({
id:sub_type+sub_type_parameter,
name: "core "+sub_type+" "+sub_type_parameter,
data:[],
tooltip: {
valueSuffix: ' q %'
},
yAxis:'Cpu_axis'+sub_type_parameter
})
//chart.redraw();
flag=false
console.log("returning from cpu")
}
- hast du keine Lösung gefunden ? Ich bin gerade auch mit demselben Problem, die Punkte werden manchmal, aber meistens ist leer Kerzen erscheinen. jsfiddle.net/nitincool4urchat/3v61f8v7/12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich es sehen kann ist die alte Frage des 2013 Jahr. Aber es sind meine Gedanken für die anderen Jungs, suchen die Antwort auf diese Frage jetzt.
Es ist highcharts.js bug https://github.com/highcharts/highcharts/issues/3452. In der kurzen bug-Beschreibung: wenn Punkt Hinzugefügt mit addPoint () - Methode Diagramm-Serie, dann ist dieser neue Punkt erscheint nicht in someSerie.Daten-array.
Schlage ich folgenden workaround für dieses Problem "neue Punkte nicht in someSerie.Daten-array" :
Danach Folgendes prüfen :
funktionieren sollte OK.
Also, es geht darum, wie Sie mit
addPoint()
Funktion:Haben Sie festgelegt redraw = false, so wird es nicht neu gezeichnet-Diagramm. Setzen Sie ihn auf true, und wird daran arbeiten.
Mehr über: http://api.highcharts.com/highcharts#Series.addPoint()
//chart.redraw();
Kann ich es sehen 'live'?id:sub_type+sub_type_parameter,
?