Frage

Ich benutze Highcharts (Link zu einer bestimmten Demo-Klicken Sie auf Optionen anzeigen, um den folgenden Code zu vergleichen), um einige Daten für die persönliche Verwendung zu rendern.

Hinweis: Dies ist fast definitiv ein ME-bezogener Fehler, daher möchte ich nicht unterstellen, dass Highcharts schuld ist-es ist wirklich eine wundervolle API!

Beim Einstellen der Serie.Data Feld des Diagrammobjekts begegne ich auf eine seltsame Array -Schnitte.

Zum Beispiel funktioniert dies gut:

series: [{
    name: 'seriesName',
    data: [22, 24, 15]
}]

Und drei Datenpunkte werden mit den Werten 22, 24 und 15 dargestellt.

Jedoch,

series: [{
    name: 'sillySeries',
    data: chartData[0]
}]

Rendern 3 Punkte mit den Werten 2, 4 und 5 und die Titel der Punkte betragen 2, 2 bzw. 1 ... das heißt, es spaltet die Array-Einträge in einen Titel und dann einen Wert für zweistellige Zahlen.

console.log zeigt mir, dass ChartData aussieht

22,24,15,2010-9,2010-10,2010-11 

(3 Werte für 3 Monate)

Obwohl die tatsächlichen Arrays eher ähnlich sind [22,24,15] [2010-9.2010-10.2010-11

Mein 2D-Array chartData[][] hat [column][row] Indizes für die Daten, und ich stellte mir fest chartData[0] würde ein Array zurückgeben.

Vielleicht sollte meine Frage lauten: Wie kehre ich ein 1D -Array aus einer 2D -Array -Darstellung zum Einstellen von Eigenschaften/Werten in JavaScript -Objekten zurück? Es scheint, als würde ich wahrscheinlich etwas sehr Offensichtliches übersehen.


bearbeiten:

data: [24]

Diagramme einen Punkt bei 24, großartig.

data: '24'

Teilen Sie die Daten als Titel und dann als Wert auf und zeichnen effektiv einen Punkt bei 4 und nicht 24.

Die Darstellung wird also zu einer Zeichenfolge, wenn ich versuche, ein Array an die zu übergeben Daten aufstellen. Wie kann ich String.toarray mögen?


Bearbeiten 2:

chartData[col][row] wird als leeres Array deklariert

var chartData = [];

und anschließend mit Werten gefüllt, indem sie über die Zeilen und Spalten einer HTML -Tabelle iteriert werden, wobei der innerste Schleifengehalt aussieht

chartData[cellIndex][rowIndex] = $(currentCell).text();
War es hilfreich?

Lösung 2

ParseInt () rettete den Tag.

etwas wie

for (i=0; i<chartData[0].length; ++i) {
    columnOne.push(parseInt(chartData[0][i]);
}

gab mir ein Array, das ich dann verwenden konnte, um die Daten mit dem Datenfeld in der Objektnotation anzuzeigen

data: columnOne

oder wörtlicher

Diagramm1.Series [0] .Data = columnone;

Danke James, dass du darauf hingewiesen hast

Während ChartData wahrscheinlich ein Array ist, klingt es so, als ob ChartData [0] eine Zeichenfolge ist.

Was zu meiner Entdeckung führte, dass die Daten in meinem Array tatsächlich alle Saiten waren, die ich auf diese Weise aufbewahrt habe, weil einige Felder Strings sind, einige Daten sind (jyyy-mm-dd) und einige nur ints.

Vielen Dank an euch beide =)

Andere Tipps

Während ChartData wahrscheinlich ein Array ist, klingt es so, als ob ChartData [0] eine Zeichenfolge ist. Wenn Sie einen Array -Index für eine Zeichenfolge verwenden, erhalten Sie das Zeichen an dieser Position, genau das, was Sie erleben ...

Rendern 3 Punkte mit den Werten 2, 4 und 5 und die Titel der Punkte betragen 2, 2 bzw. 1 ... das heißt, es spaltet die Array-Einträge in einen Titel und dann einen Wert für zweistellige Zahlen.

Es gibt viele Möglichkeiten, Arrays innerhalb von Arrays in JavaScript zu definieren. Hier ist eine:

var chartData = [
  [22,24,15]
  ,['2010-9','2010-10','2010-11']
];

Nun, das ist keine echte Antwort, könnte Ihnen aber helfen.

Mit HighCharts können Sie bestimmte Optionen vorbereiten. In Ihrem Fall könnten Sie so etwas tun wie:

options.series[0].data = new Array(1, 0, 4);

DOC -Referenz: http://www.highcharts.com/documentation/how-to-use#options

Wenn dies fehlschlägt, kommentieren Sie oben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top