บทความนี้ทางเราจะขอแนะนำการใช้งาน ChartJs ซึ่งเป็น javascript library
สำหรับ สร้างรายงาน กราฟ ในรูปแบบ ต่าง ๆ ตัว ChartJs นั้นเป็น OpenSource ครับ
ซึ่งสามารถใช้งานได้ฟรี เรามาดูวิธีการใช้งานเบื้องต้นกันเลยดีกว่าครับ
ไปที่ http://www.chartjs.org
เริ่มต้นการใช้งาน เบื้องต้น
1.สร้าง Tag canvas กำหนดให้มี ไอดี เท่ากับ myChart
<canvas id="myChart" width="400" height="400"></canvas>
2. นำเข้า Script Chart.js CDN
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.js"></script>
3.ตัวอย่างการเรียกใช้งาน ChartJs ในรูปแบบ Bar chart
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ChartJs</title> </head> <body> <canvas id="myChart" width="400" height="400"></canvas> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.js"></script> <script> var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { type: 'bar', data: { labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"], datasets: [{ label: '# of Votes', data: [12, 19, 3, 5, 2, 3], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255,99,132,1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }, options: { scales: { yAxes: [{ ticks: { beginAtZero:true } }] } } }); </script> </body> </html>
ตัวอย่างการแสดงผล
เราสามารถ เปลี่ยนรูปแบบ การแสดงผลในรูปแบบอื่น ๆ ได้ ดังนี้
การแสดงผล แบบ Line Chart แก้ไข Script การเรียกใช้งาน ChartJs
กำหนดค่า type : ‘line’
var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { type: 'line', data: { /*code*/ }, options: { /*code*/ } });
ตัวอย่างการแสดงผล Line Chart
การแสดงผล แบบ Pie Chart แก้ไข Script การเรียกใช้งาน ChartJs
กำหนดค่า type : ‘pie’
var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { type: 'line', data: { /*code*/ }, options: { /*code*/ } });
ตัวอย่างการแสดงผล Pie Chart
สามารถดูตัวอย่างการตั้งค่า อื่น ๆ เพิ่มเติมที่ http://www.chartjs.org/docs/
ตัวอย่างการใช้งาน แสดงข้อมูลกราฟจากฐานข้อมูล MySQL
สร้าง ฐานข้อมูล Demo และ สร้างตาราง ชื่อ Chart
CREATE TABLE `chart` ( `id` int(11) NOT NULL, `title` varchar(255) NOT NULL, `score` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `chart` (`id`, `title`, `score`) VALUES (1, 'A', 5000), (2, 'B', 3500), (3, 'C', 2000), (4, 'D', 4000); ALTER TABLE `chart` ADD PRIMARY KEY (`id`);
สร้างไฟล์ index.php
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "demo"; $conn = mysqli_connect($servername, $username, $password, $dbname); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "SELECT * FROM chart"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { $labels[] = $row['title']; $data[] = $row['score']; } } mysqli_close($conn); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ChartJs</title> </head> <body> <canvas id="myChart" width="400" height="200"></canvas> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.js"></script> <script> var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { //type: 'bar', //type: 'line', type: 'pie', data: { labels: <?=json_encode($labels)?>, datasets: [{ label: 'Report', data: <?=json_encode($data, JSON_NUMERIC_CHECK);?>, backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255,99,132,1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 0 }] }, options: { scales: { yAxes: [{ ticks: { beginAtZero:true } }] }, responsive: true, title: { display: true, text: 'ตัวอย่างการใช้งาน Chart Js' } } }); </script> </body> </html>
ตัวอย่างการแสดงผล ChartJs