Estoy usando flot en un intento de intentar trazar algunos datos. Tuve esto trabajando con un solo conjunto de datos, y cuando intenté modificar el código para usar más de un conjunto de datos, me encontré con un error. Me está costando rastrear y dejó de funcionar. Estoy seguro de que es un cambio que hice, pero por mi vida no puedo rastrearlo.Trazar múltiples conjuntos de datos con flot usando ajax - Los datos no se muestran correctamente
El eje Y muestra -1.0, -0.5, 0, 0.5 y 1.0, apenas los valores que esperaba y no hay datos del eje X. El gráfico aparece en blanco.
Estoy tratando de lograr algo similar al gráfico de reputación en StackOverflow, pero esto representará valores numéricos diferentes. El primer valor del par data
está destinado a ser una marca de tiempo (creo que lo he calculado correctamente), y el segundo valor del par data
es el valor que se trazará.
Me aseguré de que hago no tengo mis valores entre comillas, que vi que era uno de los problemas más comunes.
Cualquier comentario o ayuda para señalar el problema sería muy apreciado.
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));
?>
salida de la consola
[Object { label="activeUsers", data=[6]}, Object { label="totalUsers", data=[6]}]
[[Object { label="activeUsers", data=[6], color=0}]]
[[Object { label="totalUsers", data=[6], color=1}]]
devolverán como JSON de Firebug (formateo añaden a esta publicación)
[
{"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]]}
]
Por lo que sé, '$ .plot' toma una matriz de objetos como' data' parámetro, pero parece pasar una matriz de selección de objeto. Además, es posible [graficar varias series a la vez sin iterar a través de ellas] (http://people.iola.dk/olau/flot/examples/basic.html). – Maehler
Bueno, esa es la estructura de matriz resultante que proviene de la decodificación de la cadena JSON como incluso se muestra en el ejemplo de flot ajax, a menos que me falta algo. Además, estoy iterando por ahora para agregar los colores. Eso se manejará de manera diferente más adelante. – Dutchie432