Отображение данных из базы данных MySQL в линейном графике

Я пытался отобразить данные из таблицы MySQL в линейной диаграмме. ось X содержит имена сотрудников, а ось Y содержит идентификационный номер. Я столкнулся с проблемой, что строка (имя сотрудника) не отображается на оси X, и она показывает только числовое значение
Код, который я пробовал до сих пор:

<?php

$dataPoints = array();

try{

$link = new PDO('mysql:host=localhost;dbname=aa', 'root', '');

$handle = $link->prepare('select * from staff');
$handle->execute();
$result = $handle->fetchAll(PDO::FETCH_OBJ);

foreach($result as $row){

array_push($dataPoints, array("x"=> $row->Name, "y"=> $row->id));
}
$link = null;
}
catch(PDOException $ex){
print($ex->getMessage());
}

?>
<!DOCTYPE HTML>
<html>
<head>
<script>
window.onload = function () {

var chart = new CanvasJS.Chart("chartContainer", {
animationEnabled: true,
exportEnabled: true,
theme: "light1",
title:{
text: "PHP Column Chart from Database"},
xaxis
data: [{
type: "line", //change type to bar, line, area, pie, etc
yValueFormatString: "$#,##0K",
indexLabel: "{y}",
indexLabelPlacement: "inside",
indexLabelFontWeight: "bolder",
indexLabelFontColor: "white",

dataPoints: <?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
}]
});
chart.render();

}
</script>
</head>
<body>
<center><div id="chartContainer" style="height: 370px; width: 50%;"></div></center>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js">
</script>
</body>
</html>

0

Решение

х-значение может быть числовым или значением dateTime. Но в вашем случае это выглядит как строка. Ты можешь использовать метка оси, вместо х-значения в вашем случае.

array_push($dataPoints, array("label"=> $row->Name, "y"=> $row->id));
2

Другие решения

Если вы видите документацию по атрибуту CanvasJS datapoint Икс принимать только числовое значение, которое вы должны использовать этикетка.
попытаться изменить

array_push($dataPoints, array("x"=> $row->Name, "y"=> $row->id));

в

array_push($dataPoints, array("label"=> $row->Name, "y"=> $row->id));
1

По вопросам рекламы [email protected]