ChartJS 数组作为一个项目
ChartJS Arrays Acting as One Item
我正在尝试从 mySQL 数据库导入读数,并将它们放在 ChartJS 上。
$query = mysqli_query($conn, "SELECT * FROM readings
ORDER BY readings_id DESC LIMIT 2");
$distance = array();
$timestamp = array();
while($row = mysqli_fetch_array($query)) {
$distance[] = $row['river_height'];
$time[] = $row['time_stamp'];
}
这是我正在使用的查询以及我将读数存储在数组中的方法。
但是,例如,当我尝试将它们放在条形图中时,这 2 个读数将作为一个读数。
我有如下 Javascript 代码:
const time = <?php echo json_encode($time); ?>;
var canvasElement = document.getElementById("chart");
var config = {
type: 'bar',
data: {
labels: [time],
datasets: [{data:[10, 20]}],
}
}
我已经尝试了很多东西,但无法弄清楚。我对此很陌生,所以没有帮助。任何建议或帮助将不胜感激。
假设您希望 time_stamp
作为 X 轴,river_height
作为 Y 轴,更改为:
PHP :
while($row = mysqli_fetch_array($query)) {
$data[] = [
'x' => $row['time_stamp'],
'y' => $row['river_height']
];
}
JavaScript :
var config = {
type: 'bar',
data: {
datasets: [{
data: <?= json_encode($data) ?>
}]
}
};
发生这种情况是因为您的 PHP 正在为标签返回一个数组,然后您将该数组放入另一个数组中。如您所见,这告诉 chart.js 它必须是多行标签。
要获得您想要的行为,您需要像这样删除标签字段中的数组括号:
const time = <?php echo json_encode($time); ?>;
var canvasElement = document.getElementById("chart");
var config = {
type: 'bar',
data: {
labels: time, // remove array brackets around time
datasets: [{data:[10, 20]}],
}
}
我正在尝试从 mySQL 数据库导入读数,并将它们放在 ChartJS 上。
$query = mysqli_query($conn, "SELECT * FROM readings
ORDER BY readings_id DESC LIMIT 2");
$distance = array();
$timestamp = array();
while($row = mysqli_fetch_array($query)) {
$distance[] = $row['river_height'];
$time[] = $row['time_stamp'];
}
这是我正在使用的查询以及我将读数存储在数组中的方法。
但是,例如,当我尝试将它们放在条形图中时,这 2 个读数将作为一个读数。
const time = <?php echo json_encode($time); ?>;
var canvasElement = document.getElementById("chart");
var config = {
type: 'bar',
data: {
labels: [time],
datasets: [{data:[10, 20]}],
}
}
我已经尝试了很多东西,但无法弄清楚。我对此很陌生,所以没有帮助。任何建议或帮助将不胜感激。
假设您希望 time_stamp
作为 X 轴,river_height
作为 Y 轴,更改为:
PHP :
while($row = mysqli_fetch_array($query)) {
$data[] = [
'x' => $row['time_stamp'],
'y' => $row['river_height']
];
}
JavaScript :
var config = {
type: 'bar',
data: {
datasets: [{
data: <?= json_encode($data) ?>
}]
}
};
发生这种情况是因为您的 PHP 正在为标签返回一个数组,然后您将该数组放入另一个数组中。如您所见,这告诉 chart.js 它必须是多行标签。 要获得您想要的行为,您需要像这样删除标签字段中的数组括号:
const time = <?php echo json_encode($time); ?>;
var canvasElement = document.getElementById("chart");
var config = {
type: 'bar',
data: {
labels: time, // remove array brackets around time
datasets: [{data:[10, 20]}],
}
}