Witam. Próbuję zmierzyć się z wykresami Highcharts tworzonymi z plików JSON. Mam problem z "przekodowaniem" danych JSON na format akceptowany przez wykresy. Chciałbym utworzyć wykres kolumnowy, który na osi x zawierałby kategorie (2010, 2011, 2012, 2014), a w każdej kategorii 3 serie danych (soki, dżemy, desery), których wartość prezentowana jest na osi y. Bezpośrednie wpisanie danych do serii w opcjach wykresu generuje go poprawnie. Oto kod:
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>Update Series Data</title> <script type="text/javascript" src="js/jquery-1.9.1.js"></script> <script type="text/javascript" src="js/highcharts.js"></script> <script type="text/javascript"> $(function () { var json = [{ //name: 'Soki', data:[70, 75, 65, 90, 85]}, //{name: 'Dżemy', data:[80, 45, 90, 85, 90]}, //{name: 'Desery', data:[80, 80, 90, 101, 90], }]; var processed_json = new Array(); $.map(json, function(obj, i) { processed_json.push([obj.name, parseFloat(obj.data)]); }); $('#container').highcharts({ chart: { type: 'column' }, xAxis: { //type: "category" categories:['2010','2011','2012','2013','2014'] }, series: [{ //data: processed_json name: 'Soki', data:[70, 75, 65, 90, 85]}, {name: 'Dżemy', data:[80, 45, 90, 85, 90]}, {name: 'Desery', data:[80, 80, 90, 101, 90], }] }); }); </script> </head> <body> <div id="container" style="height: 300px"></div> </body> </html>
Po wpisaniu tych danych do zmiennej json wykres nie generuje się już poprawnie. Na osi x jest rok 2010, 2011, 2012, a do każdego roku przypisane są po kolei soki, dżemy, desery. Coś jest nie tak z parsowaniem danych. Nie mogę znaleźć przyczyny i bardzo proszę o pomoc. Kod wygląda tak:
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>Update Series Data</title> <script type="text/javascript" src="js/jquery-1.9.1.js"></script> <script type="text/javascript" src="js/highcharts.js"></script> <script type="text/javascript"> $(function () { var json = [{ name: 'Soki', data:[70, 75, 65, 90, 85]}, {name: 'Dżemy', data:[80, 45, 90, 85, 90]}, {name: 'Desery', data:[80, 80, 90, 101, 90], }]; var processed_json = new Array(); $.map(json, function(obj, i) { processed_json.push([obj.name, parseFloat(obj.data)]); }); $('#container').highcharts({ chart: { type: 'column' }, xAxis: { //type: "category" categories:['2010','2011','2012','2013','2014'] }, series: [{ data: processed_json }] }); }); </script> </head> <body> <div id="container" style="height: 300px"></div> </body> </html>
Pozdrawiam
avrfun