Skip to main content

สร้าง Chart ด้วย ApexCharts

สวัสดีครับ ในบทความนี้เราจะมาแนะนำการสร้าง 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


Deprecated: Function create_function() is deprecated in /home/service1/domains/monkeywebstudio.com/public_html/wp-content/plugins/simple-lightbox/controller.php on line 1642