Używam flot w próbie wypróbowania niektórych danych. Miałem to działa z jednym zestawem danych, a gdy próbowałem zmodyfikować kod, aby użyć więcej niż jednego zestawu danych, natknąłem się na błąd, który mam trudności ze śledzeniem i przestał działać. Jestem pewna, że to zmiana, którą zrobiłem, ale nie mogę tego wytropić w życiu.Wykreślanie wielu zestawów danych za pomocą flot za pomocą ajax - Dane nie wyświetlają się poprawnie
Oś Y pokazuje -1,0, -0,5, 0, 0,5 i 1,0 - prawie nie oczekuje wartości i nie ma danych osi X. Wykres wydaje się pusty.
Próbuję wykonać coś podobnego do wykresu reputacji na StackOverflow, ale będzie to reprezentować różne wartości liczbowe. Pierwsza wartość pary data
ma być znacznikiem czasowym (myślę, że mam ją poprawnie obliczoną), a druga wartość z pary data
jest wartością do wykreślenia.
Upewniłem się, że wykonuję , a nie moje wartości w cudzysłowach, które widziałem był jednym z najczęstszych problemów tam.
Wszelkie uwagi lub pomoc w wskazaniu problemu będą najbardziej mile widziane.
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));
?>
wyjścia konsoli
[Object { label="activeUsers", data=[6]}, Object { label="totalUsers", data=[6]}]
[[Object { label="activeUsers", data=[6], color=0}]]
[[Object { label="totalUsers", data=[6], color=1}]]
powrócił json z Firebug (formatowania dodane do tego postu)
[
{"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]]}
]
Z tego co wiem, '$ .plot' bierze tablicę obiektów jak' data' parametr, ale wydaje się przekazać tablicę tablicy obiektu. Ponadto możliwe jest [wydrukowanie wielu serii naraz bez ich powtarzania] (http://people.iola.dk/olau/flot/examples/basic.html). – Maehler
Cóż, jest to wynikowa struktura tablicowa, która pochodzi z dekodowania łańcucha JSON, tak jak pokazano to nawet w przykładzie Flot Ajax, chyba że czegoś brakuje. Ponadto powtarzam na razie dodawanie kolorów. To potrwa inaczej w późniejszym terminie. – Dutchie432