2016-08-09 38 views
-3

HightCharts realtime line errorHightCharts Realtime Leitungsfehler

Wer die folgenden Probleme gehabt?

+4

Könnten Sie bitte näher ausführen, was Sie tun und was genau der Fehler – Prateek

+2

Könnten Sie geben mehr spezifische Informationen über Ihr Problem und Post anschauliches Beispiel, damit wir das Problem untersuchen können? –

+0

Sorry für meine Form von Fragen. Ich war das erste Mal in Frage hier. Vor einigen Tagen folge ich dem Beispiel der offiziellen Website, um eine Echtzeit-Liniendiagramm zu erreichen, und ich verweise den Link '', aber heute, wenn ich die Seite leite, habe ich ein Problem in FireFox gefunden, als blaze Foto.Later, fand ich die Highchart-Version variieren, der obige Link ist v4.2.6, v4.2.5 ist korrekt. [Foto] (http://i.stack.imgur.com/Cvbey.png). – Eliza

Antwort

0
var loadChart = function() { 
     $.getJSON('data.json', function (json) { 
      var index = 0; 

      var getData = function (index, type) { 
       var result = null; 
       if (type != undefined) { 
        result = parseInt(json[index][type]); 
       } else { 
        result = json[index]; 
       } 
       return result; 
      }; 

      var getSeriesData = function() { 
       // 结构 
       var JJData = [], 
        PCData = [], 
        PhoneData = [], 
        item; 
       var time = (new Date()).getTime(); 

       for (var i = -179; i <= 0; ++i) { 
        item = json[index++]; 
        JJData.push({ 
         x: time + i * 2000, 
         y: parseInt(item.JJ) 
        }); 
        PCData.push({ 
         x: time + i * 2000, 
         y: parseInt(item.PC) 
        }); 
        PhoneData.push({ 
         x: time + i * 2000, 
         y: parseInt(item.Phone) 
        }); 
       } 
       var result = [{ 
        name: "JJ", 
        data: JJData 
       }, { 
        name: "PC", 
        data: PCData 
       }, { 
        name: "Phone", 
        data: PhoneData 
       }]; 
       return result; 
      }; 

      chart = new Highcharts.Chart({ 
       chart: { 
        renderTo: 'container1', 
        type: 'spline', //spline 
        backgroundColor: 'rgba(202, 202, 202, 0.2)', 
        animation: Highcharts.svg, // don't animate in old IE 
        //marginRight: 10, 
        events: { 
         load: function() { 
          var series = this.series; 

          loadMinuteData = function() { 
           if (!minuteFlag) { 
            clearInterval(setMinuteInter); 

            return false; 
           } 
           var x = (new Date()).getTime(); // current time 
           var result = getData(index++); 
           // 第三个参数为true,移除最开始的数据 
           //console.log("minute"); 
           //console.log(series[0]); 
           //alert(series[0]); 
           series[0].addPoint([x, parseInt(result.JJ)], true, true); 
           series[1].addPoint([x, parseInt(result.PC)], true, true); 
           series[2].addPoint([x, parseInt(result.Phone)], true, true); 
          }; 
          var setMinuteInter = setInterval(loadMinuteData, 2000); 
         } 
        } 
       }, 
       title: { 
        text: '实时在线人数' 
       }, 
       xAxis: [{ 
        type: 'datetime', 
        tickPixelInterval: 60 
       }], 
       yAxis: { 
        title: { 
         text: '人数' 
        }, 
        plotLines: [{ 
         value: 0, 
         width: 1, 
         color: '#808080' 
        }] 
       }, 
       plotOptions: { 
        spline: { 
         marker: { 
          enabled: false 
         } 
        } 
       }, 
       tooltip: { 
        formatter: function() { 
         return '<b>' + this.series.name + '</b><br/>' + 
          Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' + 
          Highcharts.numberFormat(this.y, 2); 
        } 
       }, 
       legend: { 
        enabled: true 
       }, 
       exporting: { 
        enabled: false 
       }, 
       series: getSeriesData() 
      }); 
     }); 
    } 
+0

Dies ist meine Diagrammkonfiguration. – Eliza

+1

Wie sehen Ihre Daten aus? Leider haben wir keine Informationen darüber, was Ihre Funktion getSeriesData() zurückgibt und welche Werte Sie addPoint() hinzufügen. Können Sie Werte fest codieren, um das Problem zu beheben? –

+0

Hallo Eliza, Vielen Dank für die Bereitstellung Ihres Codes. Es wäre großartig, wenn Sie uns die hartkodierten Werte geben könnten, um uns genau zu zeigen, was das Problem ist - genau wie Sebastian geschrieben hat. Momentan denke ich, dass Ihr Problem mit der addPoint-Methode innerhalb Ihrer Load-Event-Funktion verbunden ist. Sie zeichnen jedes Diagramm neu, wenn Sie einer Ihrer Serien einen Punkt hinzufügen. Dies kann einige Probleme verursachen, wenn Sie Ihr Diagramm schnell neu zeichnen. Versuchen Sie nicht, Ihr Diagramm für jeden AddPoint neu zu zeichnen, sondern mit chart.redraw(). Schau dir dieses Beispiel an, um zu sehen, wie es funktionieren kann: http://jsfiddle.net/hzww145d/3/ –