ChartJsを使用して棒グラフと円グラフを作成したいと考えています。私は、データを取得するためにPHPとMySQLを使用しています。私が作りたい棒グラフは、男性または女性の生徒の統計と生徒の合計を示すグラフです。ここで私は結果を表示する方法の例です:php mysqlデータをChartJsに正しく渡す方法
それはまさにそれのようではないかもしれないが、私はそれがアイデアを提供します感じています。私はChartJの初心者であり、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);
}
});
ここ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"、 "Female": "2"}]
私はそれをより良くすることができ、円グラフに対しても同じことをする方法についての提案を感謝します。
は、私が何をやったかに基づいて、これは私のチャートが表示される方法です。
注写真に周波数を無視してください。
あなたのコードと一致するコードを採用しました。これはコンソールから取得した結果です:[{"gender": "Female"、 "total": "2"}、{"gender": "Male "、" total ":" 5 "}])、チャートは同じまま表示されます。 –
"total"を2番目のフィールドとして更新しました。今すぐ確認してください。 –