UPDATE Я обновил свой код в ответ на комментарии @MichaelRushton. Теперь я использую Highcharts, но у меня возникают проблемы с получением результатов в серии данных.Генерировать highchart, основанный на выходе массива
У меня теперь есть следующий массив, сгенерированный из запроса mysql, и я хотел бы вывести его в линейную диаграмму. Моя Y-ось должна содержать сумму, ось x - это диапазон дат, а легенда - разные элементы, нанесенные на диаграмму.
// Call the stored procedure
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$array[$row['legend']][$row['date']] = $row['amount'];
//print_r($array);
}
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'line'
},
xAxis:
{
categories: [2012-03-01, 2012-03-02, 2012-03-03, 2012-03-04, 2012-03-05, 2012-03-06, 2012-03-07, 2012-03-08, 2012-03-09, 2012-03-10, 2012-03-11, 2012-03-12, 2012-03-13, 2012-03-14, 2012-03-15, 2012-03-16, 2012-03-17, 2012-03-18, 2012-03-19, 2012-03-20, 2012-03-21, 2012-03-22, 2012-03-23, 2012-03-24, 2012-03-25, 2012-03-26, 2012-03-27, 2012-03-28, 2012-03-29, 2012-03-30, 2012-03-31],
},
series:
[
<?php
foreach ($array as $legend => $data)
{
echo '{';
echo "name: '" . $legend . "',";
$values = array();
for ($i = 1; $i <= 31; ++$i)
{
$values[] = isset($data[$i]) ? $data[$i] : 0;
}
echo 'data: [' . implode(', ', $values) . '],';
echo '},';
}
?>
],
}
);
<div id="container" style="width: 100%; height: 400px"></div>
)
Этот код представляет меня следующий вывод:
series: [ {name: 'Something Tastier',data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],},{name: 'Something Tasty',data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],}, ], });
кажется правильным, за исключением нет значения вывода рядов данных. Если у кого-то есть какие-то дальнейшие идеи, это будет очень признательно.
Привет, Майкл, это выглядит очень полезно. В настоящее время я использую PDO $ stmt-> fetchAll (PDO :: FETCH_ASSOC); для рендеринга моего массива. Любые идеи о том, как я могу изменить вывод в массив, который вы предложили? –
Итерации над результатом и do '$ array [$ row ['legend']] [$ row ['day']] = $ row ['amount'];' – MichaelRushton
Спасибо, что код Michael теперь попадает туда. У меня возникли проблемы с обновлением серии данных. –