it-swarm.com.de

Wie kann man Highcharts als Standard für fehlende Daten festlegen?

Ich habe eine Zeitreihe im Abstand von 1 Minute. Ich möchte das in einem Diagramm mit fehlenden Punkten als 0 anzeigen.

Ich habe xAxis.ordinal gefunden und das Kontrollkästchen deaktiviert, wodurch die Zeitreihen richtig angeordnet sind. Das Problem ist, dass es Linien direkt zwischen den Punkten zieht, ohne für die fehlenden Daten auf 0 zu gehen.

47
Wraithan

Eine Möglichkeit besteht darin, die Daten vorzuverarbeiten und null durch 0 zu ersetzen:

var withNulls = [null, 12, 23, 45, 3.44, null, 0];
var noNulls = withNulls.map(function (item) {
    return (item === null) ? 0 : item;
});

Beispiel auf jsfiddle gespeichert: http://jsfiddle.net/7mhMP/

5
eolsson

Ich habe die API-Referenz von HighCharts gesucht, aber sie bieten diese Option nicht an. Sie bieten die Möglichkeit, die Verbindung von Punkten zu deaktivieren, wenn null-Daten dazwischen liegen (nur Linien- und Flächendiagramme):

var chart = new Highcharts.Chart({
    plotOptions: {
        line: {
            connectNulls: false
        }
    }
});

Dies ist die Standardeinstellung gemäß der API. Ich bin mir also nicht sicher, warum Ihre Daten eine Verbindung zwischen null-Werten herstellen. Vielleicht haben sie in letzter Zeit die Standardeinstellungen geändert?

Example of HighChart with missing data

Ich denke, dass dies eine gute Darstellung Ihrer Daten ist, da die Standardeinstellung von null auf 0 irreführend erscheint.

5
Justus Romijn

Sie müssen die fehlenden Daten als 0 ..__ ausfüllen, da Highchart kein xAxis-Intervall enthält.

Wenn Sie eine Zeitreihe in einem Intervall von 1 Minute haben, sollten Sie alle fehlenden Minuten - Daten auf 0 setzen. Wenn Sie eine Zeitreihe in einem Intervall von 1 Tag haben, werden Sie sollte alle fehlenden day data auf 0 setzen.

1
Aaronlong31

Ich habe das gleiche Problem, und ich verstehe, dass Sie Ihre Datenstruktur in der Datenbank als VARCHAR festlegen und den Standardwert auf NULL setzen sollten, damit dort, wo Sie keine Daten haben, NULL wird. Dann akzeptieren Sie Nullwerte und Highchart zeigt fehlende Bereiche nicht an und verbindet sie mit null-Werten.
Außerdem müssen Sie Daten als NULL empfangen und nicht in '' ändern.
siehe dieses Arbeitsbeispiel: 

var chart = new Highcharts.Chart({

    chart: {
        defaultSeriesType: 'spline', // use line or spline
        renderTo: 'container1'
    },

    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    series: [{
        data: [9, 4,null, 2, 1, 0, 6, 5, 4, 1, 6, 4]
    }]

});

hier ist die Geige mit zwei verschiedenen Diagrammen, die null und '' verwenden

UPDATE:
Wenn Sie parseINT für Push-Daten verwenden, sollten Sie daran denken, dass parseINT(NULL) Ihnen NAN gibt. Versuchen Sie daher für diesen Fehler, NULL mit einem der folgenden Befehle manuell zu drücken: 

var val = parseInt(rows[i]);
if (isNaN(val))
{
  val = null;
  result.Push(val);
}
0
osyan