Sto utilizzando flot nel tentativo di provare a tracciare alcuni dati. Ho avuto questo lavoro con un singolo set di dati, e quando ho tentato di modificare il codice per utilizzare più di un set di dati, mi sono imbattuto in un errore che sto avendo difficoltà a rintracciare e ha smesso di funzionare. Sono sicuro che è un cambiamento che ho fatto, ma per la vita di me non riesco a rintracciarlo.Plotaggio di più dataset con flot utilizzando ajax - Dati non visualizzati correttamente
L'asse Y mostra -1.0, -0.5, 0, 0.5 e 1.0 - difficilmente i valori Mi aspetto e non ci sono dati dell'asse X. Il grafico appare vuoto.
Sto cercando di realizzare qualcosa di simile al grafico della reputazione su StackOverflow, ma questo rappresenterà diversi valori numerici. Il primo valore della coppia data
è un timestamp (penso di averlo calcolato correttamente) e il secondo valore della coppia data
è il valore da tracciare.
Mi sono assicurato che io faccia non avere i miei valori tra virgolette, che ho visto era uno dei problemi più comuni là fuori.
Qualsiasi feedback o assistenza nel segnalare il problema sarebbe più apprezzato.
stats.js
function plotField(){
var field = 'activeUsers,totalUsers';
var url = '/api/consoleGet_stats?field='+field;
$.ajax({
url: url,
method: 'GET',
dataType: 'json',
success: function(datasets){
var i = 0;
console.log(datasets);
$.each(datasets, function(key, val){
val.color=i;
i++;
var data = [ $(this) ];
console.log(data);
var options = {
lines: { show: true },
points: { show: true },
xaxis: {mode: 'time', timeformat: "%y/%m/%d", tickDecimals: 0, tickSize: 1 }
};
var placeholder = $("#placeholder");
$.plot(placeholder, data, options);
});
}
});
}
consoleGet_stats.php
<?php
//simplified for example purposes
$fields=explode(",",$_REQUEST['field']);
foreach ($fields as $field){
$rows=$dbConnect->getRows('select date, ' .$field. ' from websiteStats order by id asc');
$resultData = array('label' => $field);
foreach($rows as $row){
$t = strtotime($row['date']." UTC") * 1000;
$resultData['data'][]=array($t, (int)$row[$field]);
}
$results[]=$resultData;
}
die(Json_encode($results));
?>
uscita console
[Object { label="activeUsers", data=[6]}, Object { label="totalUsers", data=[6]}]
[[Object { label="activeUsers", data=[6], color=0}]]
[[Object { label="totalUsers", data=[6], color=1}]]
restituito JSON da Firebug (formattazione aggiunto per questo annuncio)
[
{"label":"activeUsers","data":[[1334583090000,26],[1334669491000,26],[1334755893000,26],[1334842290000,26],[1334928691000,26],[1335015093000,26]]},
{"label":"totalUsers","data":[[1334583090000,150],[1334669491000,170],[1334755893000,193],[1334842290000,200],[1334928691000,225],[1335015093000,257]]}
]
Da quello che so, '$ .plot' accetta un array di oggetti come' data' parametro, ma ti sembra di passare un array di array di oggetti. Inoltre, è possibile [tracciare più serie contemporaneamente senza scorrere tra loro] (http://people.iola.dk/olau/flot/examples/basic.html). – Maehler
Bene, questa è la struttura di array risultante che deriva dalla decodifica della stringa JSON come anche mostrata nell'esempio flot di ajax, a meno che non manchi qualcosa. Inoltre, sto iterando per ora per aggiungere i colori. Questo sarà gestito diversamente in seguito. – Dutchie432