สวัสดีครับ ในบทความนี้เราจะมาแนะนำการสร้าง Bar Chart ด้วย ApexCharts ซึ่งเป็น open-source charts Javascript รองรับการสร้าง Chart ได้หลากหลายรูปแบบ ดูตัวอย่างเต็ม ๆ ได้ที่ https://apexcharts.com/
การใช้งานเบื้องต้น
ในตัวอย่างนี้เราจะเรียกใช้งานด้วย Javascript โดยจะต้องมีการนำเข้าไฟล์ Apexcharts ดังนี้
<script src='https://cdn.jsdelivr.net/npm/apexcharts'></script>
ตัวอย่างการใช้งาน
สร้างไฟล์ bar.html และเขียนคำสั่ง Javascript ดังนี้
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>ApexChart</title> <link rel="stylesheet" href="./style.css"> <style> #chart { max-width: 650px; margin: 35px auto; } .apexcharts-menu-item.exportSVG { display: none; } .apexcharts-menu-item.exportCSV { display: none; } </style> </head> <body> <div id="chart"></div> <script src='https://cdn.jsdelivr.net/npm/apexcharts'></script> <script> var options = { chart: { type: 'bar', }, plotOptions: { bar: { distributed: true } }, series: [{ name: 'sales', data: [300,400,450,500,409], }], title: { text: 'Custom DataLabels', align: 'center', floating: true }, subtitle: { text: 'Category Names as DataLabels inside bars', align: 'center', }, xaxis: { categories: ['DATA1','DATA2','DATA3','DATA4','DATA5'], labels: { show: true, rotate: -45, rotateAlways: true, hideOverlappingLabels: true, showDuplicates: false, trim: false, minHeight: 120, maxHeight: 120, style: { colors: [], fontSize: '12px', fontFamily: 'Helvetica, Arial, sans-serif', fontWeight: 400, cssClass: 'apexcharts-xaxis-label', }, offsetX: 0, offsetY: 0, format: undefined, formatter: undefined, datetimeUTC: true, datetimeFormatter: { year: 'yyyy', month: "MMM 'yy", day: 'dd MMM', hour: 'HH:mm', }, }, } } var chart = new ApexCharts(document.querySelector("#chart"), options); chart.render(); </script> </body> </html>
ตัวอย่างการทำงาน
การประยุกต์ใช้งาน แสดงข้อมูล Bar Chart จากฐานข้อมูล ด้วย PHP/MySQL
สร้าง Database ชื่อ test และ สร้างตาราง ชื่อ report ดังนี้
CREATE TABLE `report` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `value` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
INSERT INTO `report` (`id`, `title`, `value`) VALUES (1, 'Mon', 12000), (2, 'Tue', 30000), (3, 'Wed', 50000), (4, 'Thu', 80000), (5, 'Fri', 90000), (6, 'Sat', 20000), (7, 'Sun', 75000);
สร้างไฟล์ index.php ดังนี้
โดยในไฟล์นี้จะเป็นการ ดึงข้อมูลจาก MySQL ด้วย PHP และ นำค่าที่ได้ มากำหนดลงในคำสั่ง Javascript เพื่อให้ ApexCharts นำข้อมูลไปแสดงผลเป็น Bar Chart ต่อไป
<?php //ตั้งค่าการเชื่อมต่อฐานข้อมูล $servername = "localhost"; $username = "root"; $password = ""; $dbname = "test";//กำหนดชื่อฐานข้อมูล $conn = mysqli_connect($servername, $username, $password, $dbname); mysqli_set_charset($conn, "utf8"); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "SELECT * FROM report"; //คำสั่ง เลือกข้อมูลจากตาราง report $result = mysqli_query($conn, $sql); $title = []; $value = []; if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { $title[] = $row['title']; $value[] = $row['value']; } } mysqli_close($conn); ?> <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>ApexChart</title> <style> #chart { max-width: 650px; margin: 35px auto; } .apexcharts-menu-item.exportSVG { display: none; } .apexcharts-menu-item.exportCSV { display: none; } </style> </head> <body> <!-- แสดงข้อมูล Chart --> <div id="chart"></div> <!-- นำเข้า apexcharts library --> <script src='https://cdn.jsdelivr.net/npm/apexcharts'></script> <!-- javascript สำหรับเขียนคำสั่งเรียกใช้งาน apexcharts library --> <script> var options = { chart: { type: 'bar', }, plotOptions: { bar: { distributed: true } }, series: [{ name: 'จำนวน', data: <?=json_encode($value);?> }], title: { text: 'รายงานสรุปยอดขาย', align: 'center', floating: true }, subtitle: { text: 'ยอดขายประจำสัปดาห์', align: 'center', }, xaxis: { categories: <?=json_encode($title);?>, labels: { show: true, rotate: -45, rotateAlways: true, hideOverlappingLabels: true, showDuplicates: false, trim: false, minHeight: 120, maxHeight: 120, style: { colors: [], fontSize: '12px', fontFamily: 'Helvetica, Arial, sans-serif', fontWeight: 400, cssClass: 'apexcharts-xaxis-label', }, offsetX: 0, offsetY: 0, format: undefined, formatter: undefined, datetimeUTC: true, datetimeFormatter: { year: 'yyyy', month: "MMM 'yy", day: 'dd MMM', hour: 'HH:mm', }, }, } } var chart = new ApexCharts(document.querySelector("#chart"), options); chart.render(); </script> </body> </html>
ตัวอย่างการทำงาน
โดยในตัวอย่างนี้ Bar Chart ที่แสดงจะเป็นข้อมูลที่มาจาก Database