Code JavaScript tạo biểu đồ/đồ thị dạng phễu

JavaScript Funnel Chart - Biểu đồ phễu được tạo bằng JavaScript trong thư viện CanvasJS thường dùng cho mục đích trình bày nhiều giai đoạn trong một quá trình. Về cơ bản, nó bao gồm hai phần: phần cao hơn là đầu (hay đế), phần thấp hơn là cổ. Chúng thường được dùng để minh họa quá trình bán hàng.

Dạng biểu đồ phễu trên CanvasJS có tính tương tác, đáp ứng, tương thích chéo nền tảng, hỗ trợ hiệu ứng & xuất dưới dạng ảnh.

Ví dụ bên dưới minh họa một mẫu biểu đồ JavaScript dạng phễu. Bạn sẽ có phần mã nguồn chi tiết ở bên dưới để chỉnh sửa như ý muốn.

Mẫu biểu đồ JavaScript dạng phễu

<!DOCTYPE HTML>
<html>
<head>
<script>
window.onload = function () {

var chart = new CanvasJS.Chart("chartContainer", {
	animationEnabled: true,
	theme: "light2", //"light1", "dark1", "dark2"
	title:{
		text: "Phân tích bán hàng - Tháng 6, 2016"
	},
	data: [{
		type: "funnel",
		indexLabelPlacement: "inside",
		indexLabelFontColor: "white",
		toolTipContent: "<b>{label}</b>: {y} <b>({percentage}%)</b>",
		indexLabel: "{label} ({percentage}%)",
		dataPoints: [
			{ y: 1400, label: "Khách hàng tiềm năng" },
			{ y: 1212, label: "Giao tiếp ban đầu" },
			{ y: 1080, label: "Đánh giá khách hàng" },
			{ y: 665,  label: "Đàm phán" },
			{ y: 578, label: "Nhận đơn hàng" },
			{ y: 549, label: "Thanh toán" }
		]
	}]
});
calculatePercentage();
chart.render();

function calculatePercentage() {
	var dataPoint = chart.options.data[0].dataPoints;
	var total = dataPoint[0].y;
	for(var i = 0; i < dataPoint.length; i++) {
		if(i == 0) {
			chart.options.data[0].dataPoints[i].percentage = 100;
		} else {
			chart.options.data[0].dataPoints[i].percentage = ((dataPoint[i].y / total) * 100).toFixed(2);
		}
	}
}

}
</script>
</head>
<body>
<div id="chartContainer" style="height: 300px; width: 100%;"></div>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
</body>
</html>

Nguồn: CanvasJS

Tùy chỉnh biểu đồ/đồ thị

Bạn có thể thay đổi một số thuộc tính trong code JavaScript để tạo biểu đồ/đồ thị phễu như ý muốn:

  • neckWidth & neckHeight: Độ cao và rộng của phần cổ phễu.
  • valueRepresents: Đại diện giá trị
  • color: Màu sắc
  • indexLabelPlacement: Đặt nhãn chỉ mục
  • fillOpacity: Độ mờ khi điền thông tin
  • ...
Thứ Năm, 16/03/2023 14:25
51 👨 282
0 Bình luận
Sắp xếp theo
    ❖ JavaScript