ออกแบบ Dashboard ด้วย Chart.js
Chart.js เป็น JavaScript Library สำหรับสร้างกราฟบนเว็บไซต์ ใช้งานง่าย รองรับ Responsive Design และสามารถนำไปใช้ร่วมกับ PHP, MySQL หรือ API เพื่อสร้าง Dashboard ที่แสดงข้อมูลแบบ Dynamic ได้
Chart.js รองรับกราฟหลายประเภท เช่น
- Bar Chart
- Line Chart
- Pie Chart
- Doughnut Chart
- Radar Chart
- Scatter Chart
เหมาะสำหรับ Dashboard ที่ต้องการสรุปข้อมูลให้เข้าใจได้ง่ายในรูปแบบกราฟ
เริ่มต้นใช้งาน Chart.js
สามารถทดลองใช้งานผ่าน CDN ได้ทันที
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
จากนั้นสร้างพื้นที่สำหรับแสดงกราฟด้วย <canvas>
<div style="max-width: 700px;">
<canvas id="salesChart"></canvas>
</div>
สร้างกราฟแรก
ตัวอย่าง Bar Chart แสดงยอดขายรายเดือน
<script>
const ctx = document.getElementById('salesChart');
new Chart(ctx, {
type: 'bar',
data: {
labels: [
'มกราคม',
'กุมภาพันธ์',
'มีนาคม',
'เมษายน',
'พฤษภาคม'
],
datasets: [{
label: 'ยอดขาย',
data: [12000, 19000, 15000, 22000, 28000]
}]
},
options: {
responsive: true,
plugins: {
legend: {
display: true
}
}
}
});
</script>
โค้ดส่วนสำคัญประกอบด้วย
typeกำหนดประเภทกราฟlabelsกำหนดชื่อข้อมูลdatasetsกำหนดชุดข้อมูลoptionsใช้ปรับแต่งการแสดงผล
สร้าง Line Chart
หากต้องการดูแนวโน้มข้อมูลตามช่วงเวลา สามารถใช้ Line Chart
new Chart(document.getElementById('lineChart'), {
type: 'line',
data: {
labels: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.'],
datasets: [{
label: 'จำนวนผู้ใช้งาน',
data: [120, 180, 230, 310, 420]
}]
},
options: {
responsive: true
}
});
Line Chart เหมาะกับข้อมูล เช่น ยอดขาย จำนวนผู้ใช้งาน จำนวนคำสั่งซื้อ หรือสถิติรายเดือน
โครงสร้าง Dashboard ที่แนะนำ
Dashboard ที่ดีไม่ควรมีเฉพาะกราฟ แต่ควรมีข้อมูลสรุปด้านบนด้วย
ตัวอย่าง
┌──────────┐ ┌──────────┐ ┌──────────┐
│ ยอดขาย │ │ ลูกค้า │ │ คำสั่งซื้อ │
│ ฿85,000 │ │ 1,250 │ │ 320 │
└──────────┘ └──────────┘ └──────────┘
┌─────────────────────────────────────┐
│ ยอดขายรายเดือน │
│ Line Chart │
└─────────────────────────────────────┘
┌──────────────────┐ ┌────────────────┐
│ ยอดขายตามหมวด │ │ สัดส่วนลูกค้า │
│ Bar Chart │ │ Doughnut Chart │
└──────────────────┘ └────────────────┘
การจัด Dashboard แบบนี้ช่วยให้ผู้ใช้งานเห็นข้อมูลสำคัญก่อน แล้วจึงดูรายละเอียดผ่านกราฟ
ใช้ Chart.js ร่วมกับ PHP
ข้อมูลจริงมักมาจากฐานข้อมูล MySQL
PHP สามารถดึงข้อมูลแล้วส่งให้ JavaScript ได้ เช่น
<?php
$sales = [
12000,
19000,
15000,
22000,
28000
];
?>
แล้วส่งข้อมูลให้ Chart.js
const salesData = <?= json_encode($sales) ?>;
new Chart(document.getElementById('salesChart'), {
type: 'bar',
data: {
labels: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.'],
datasets: [{
label: 'ยอดขาย',
data: salesData
}]
}
});
วิธีนี้ทำให้ Dashboard สามารถแสดงข้อมูลจริงจากฐานข้อมูลได้
ใช้ร่วมกับ Tailwind CSS
Chart.js สามารถใช้ร่วมกับ Tailwind CSS เพื่อสร้าง Layout Dashboard ได้ง่าย
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-white rounded-xl shadow p-6">
<h2 class="text-lg font-bold mb-4">
ยอดขายรายเดือน
</h2>
<canvas id="salesChart"></canvas>
</div>
<div class="bg-white rounded-xl shadow p-6">
<h2 class="text-lg font-bold mb-4">
สัดส่วนสินค้า
</h2>
<canvas id="productChart"></canvas>
</div>
</div>
ช่วยให้ Dashboard รองรับทั้งคอมพิวเตอร์ แท็บเล็ต และโทรศัพท์มือถือ
Dashboard สามารถนำไปใช้กับอะไรได้บ้าง?
Chart.js เหมาะสำหรับสร้าง Dashboard เช่น
- Dashboard ยอดขาย
- ระบบสต็อกสินค้า
- ระบบสมาชิก
- ระบบงานบุคคล
- ระบบรายงาน
- Dashboard การเงิน
- Dashboard สถิติเข้าเว็บไซต์
- ระบบติดตามงาน
- ระบบข้อมูลเกษตร
- Admin Dashboard
ข้อควรระวัง
หาก Dashboard มีข้อมูลจำนวนมาก ควร
- สรุปข้อมูลจาก Backend ก่อนส่งมาแสดง
- ไม่โหลดข้อมูลทั้งหมดพร้อมกัน
- ใช้ API สำหรับข้อมูลที่ต้องอัปเดตบ่อย
- จำกัดจำนวนกราฟในหน้าเดียว
- เลือกประเภทกราฟให้เหมาะกับข้อมูล
- รองรับ Responsive Design
Dashboard ที่ดีควรเน้น อ่านง่ายและช่วยตัดสินใจได้เร็ว มากกว่าการใส่กราฟจำนวนมาก
สรุป
Chart.js เป็นเครื่องมือที่เหมาะสำหรับเริ่มต้นสร้าง Dashboard เพราะติดตั้งง่าย ใช้งานกับ JavaScript โดยตรง และสามารถเชื่อมต่อกับ PHP, MySQL หรือ API ได้
แนวทางสำหรับผู้เริ่มต้นคือ
- เริ่มจาก Bar และ Line Chart
- เรียนรู้
labelsและdatasets - จัด Layout Dashboard
- ดึงข้อมูลจาก PHP/MySQL
- เปลี่ยนข้อมูลเป็น JSON
- ส่งข้อมูลให้ Chart.js
- ต่อด้วย API และ Dashboard แบบ Dynamic