【发布时间】:2017-04-06 09:59:24
【问题描述】:
我希望能够使用 ChartJs 生成条形图和饼图。我正在使用 php 和 mysql 来获取数据。我要制作的条形图是一个图表,它显示了男性或女性学生的统计数据以及学生总数。这是我希望结果如何显示的示例:
它可能不完全一样,但我觉得它给出了一个想法。我的代码有问题,我似乎不明白,因为我是 ChartJs 的新手,只是尝试一下,因为 morris.js 没有得到完全支持。这是我的代码的样子:
HTML
<div class="box box-success">
<div class="box box-header with-border">
<h3 class="box-title">Student Chart</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i>
</button>
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
</div>
<div class="box-body">
<canvas id="mycanvas" style="height:230px;"></canvas>
</div>
</div>
脚本:
$.ajax({
url: 'data.php',
type: 'GET',
success:function(data){
console.log(data);
var male = [];
var female = [];
for(var count in data){
male.push(data[count].male);
female.push(data[count].female);
}
var chartdata = {
labels: male,
datasets: [
{
label: 'Student Gender',
backgroundColor: 'rgba(200, 200, 200, 0.75)',
borderColor: 'rgba(200, 200, 200, 0.75)',
hoverbackgroundColor: 'rgba(200, 200, 200, 1)',
hoverborderColor: 'rgba(200, 200, 200, 1)',
data:female
}
]
};
var ctx = $('#mycanvas');
var barGraph = new Chart(ctx, {
type:'bar',
data: chartdata
});
},
error:function(data){
console.log(data);
}
});
数据.php
$query = "SELECT
SUM(CASE WHEN gender = 'Male' THEN 1 ELSE 0 END) as Male,
SUM(CASE WHEN gender = 'Female' THEN 1 ELSE 0 END) as Female
FROM students";
$output = array();
if ($result = mysqli_query($connection, $query)) {
# code...
foreach ($result as $row) {
# code...
$output[] = $row;
}
} else {
die("There was a problem". mysqli_error($connection));
}
echo json_encode($output);
这是我从控制台得到的结果:
[{"男":"5","女":"2"}]
将感谢有关如何改进它并为饼图做同样的建议的建议。
根据我所做的,这是我的图表的显示方式:
注意请忽略照片上的频率。
【问题讨论】:
标签: javascript php mysql charts chart.js