Code mẫu JavaScript tạo biểu đồ có ảnh ở phía trên
JavaScript có thể giúp bạn tạo ra những mẫu biểu đồ/đồ thị dự báo thời tiết đẹp ấn tượng và sinh động. Dưới đây là một code mẫu biểu đồ dự báo thời tiết hàng tuần kèm ảnh được tạo bằng JavaScript.
Trong nhiều trường hợp, các hình ảnh đặt ở phía trên biểu đồ giúp người xem dễ đọc thông tin hơn. Bạn có thể phủ hình ảnh lên trên biểu đồ và đặt chúng ở vị trí mong muốn bằng Methods do CanvaJS API cung cấp. Ví dụ bên dưới minh họa dự báo thời tiết được tạo bởi code JavaScript mang tên Range Spline Area Chart with Image Overlay trên CanvasJS. Nó cũng bao gồm mã nguồn mà bạn có thể chỉnh sửa trong trình duyệt hoặc lưu để chạy biểu đồ cục bộ.

<!DOCTYPE HTML>
<html>
<head>
<style>
img{
pointer-events: none;
}
</style>
<script>
window.onload = function () {
var chart = new CanvasJS.Chart("chartContainer", {
title:{
text: "Dự báo thời tiết hàng tuần"
},
axisY: {
suffix: " °C",
maximum: 40,
gridThickness: 0
},
toolTip:{
shared: true,
content: "{name} </br> <strong>Nhiệt độ: </strong> </br> Thấp nhất: {y[0]} °C, Cao nhất: {y[1]} °C"
},
data: [{
type: "rangeSplineArea",
fillOpacity: 0.1,
color: "#91AAB1",
indexLabelFormatter: formatter,
dataPoints: [
{ label: "Thứ hai", y: [15, 26], name: "rainy" },
{ label: "Thứ ba", y: [15, 27], name: "rainy" },
{ label: "Thứ Tư", y: [13, 27], name: "sunny" },
{ label: "Thứ Năm", y: [14, 27], name: "sunny" },
{ label: "Thứ Sáu", y: [15, 26], name: "cloudy" },
{ label: "Thứ Bảy", y: [17, 26], name: "sunny" },
{ label: "Chủ Nhật", y: [16, 27], name: "rainy" }
]
}]
});
chart.render();
var images = [];
addImages(chart);
function addImages(chart) {
for(var i = 0; i < chart.data[0].dataPoints.length; i++){
var dpsName = chart.data[0].dataPoints[i].name;
if(dpsName == "cloudy"){
images.push($("<img>").attr("src", "https://canvasjs.com/wp-content/uploads/images/gallery/gallery-overview/cloudy.png"));
} else if(dpsName == "rainy"){
images.push($("<img>").attr("src", "https://canvasjs.com/wp-content/uploads/images/gallery/gallery-overview/rainy.png"));
} else if(dpsName == "sunny"){
images.push($("<img>").attr("src", "https://canvasjs.com/wp-content/uploads/images/gallery/gallery-overview/sunny.png"));
}
images[i].attr("class", dpsName).appendTo($("#chartContainer>.canvasjs-chart-container"));
positionImage(images[i], i);
}
}
function positionImage(image, index) {
var imageCenter = chart.axisX[0].convertValueToPixel(chart.data[0].dataPoints[index].x);
var imageTop = chart.axisY[0].convertValueToPixel(chart.axisY[0].maximum);
image.width("40px")
.css({ "left": imageCenter - 20 + "px",
"position": "absolute","top":imageTop + "px",
"position": "absolute"});
}
$( window ).resize(function() {
var cloudyCounter = 0, rainyCounter = 0, sunnyCounter = 0;
var imageCenter = 0;
for(var i=0;i<chart.data[0].dataPoints.length;i++) {
imageCenter = chart.axisX[0].convertValueToPixel(chart.data[0].dataPoints[i].x) - 20;
if(chart.data[0].dataPoints[i].name == "cloudy") {
$(".cloudy").eq(cloudyCounter++).css({ "left": imageCenter});
} else if(chart.data[0].dataPoints[i].name == "rainy") {
$(".rainy").eq(rainyCounter++).css({ "left": imageCenter});
} else if(chart.data[0].dataPoints[i].name == "sunny") {
$(".sunny").eq(sunnyCounter++).css({ "left": imageCenter});
}
}
});
function formatter(e) {
if(e.index === 0 && e.dataPoint.x === 0) {
return " Min " + e.dataPoint.y[e.index] + "°";
} else if(e.index == 1 && e.dataPoint.x === 0) {
return " Max " + e.dataPoint.y[e.index] + "°";
} else{
return e.dataPoint.y[e.index] + "°";
}
}
}
</script>
</head>
<body>
<script src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script>
<script src="https://canvasjs.com/assets/script/jquery.canvasjs.min.js"></script>
<div id="chartContainer" style="height: 300px; width: 100%; position: relative;"></div>
</body>
</html>Tùy biến biểu đồ
Bạn có thể xác định các tọa độ pixel đặt vị trí ảnh ở phía trên biểu đồ bằng convertValueToPixel(). Bạn cũng có thể dùng convertPixelToValue để lấy giá trị trục của tọa độ pixel tương ứng. Biểu đồ này có thể tùy biến sâu hơn bằng color - màu sắc, lineColor - màu đường thẳng, fillOpacity - độ mờ, lineThickness - độ dày…
Bạn nên đọc
-
Sự khác biệt giữa JavaScript và Python
-
Code JavaScript tạo biểu đồ/đồ thị động
-
JavaScript là gì?
-
Code mẫu biểu đồ nhiều chuỗi dữ liệu trong JavaScript
-
Code JavaScript tạo biểu đồ/đồ thị đường dạng động
-
Machine Learning trong JavaScript
-
Tổng hợp bài tập JavaScript có code mẫu
-
Code JavaScript tạo biểu đồ đa chuỗi update dữ liệu trực tiếp
-
Code mẫu biểu đồ được đồng bộ hóa trong JavaScript
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Cũ vẫn chất
-

Cách đổi tiếng Việt LOL VNG, đổi tiếng Việt LMHT VNG
2 ngày 14 -

Code Thiếu Nữ Aline Chạy Đi mới nhất
2 ngày -

Arc, một trong những lựa chọn thay thế Chrome tốt nhất đã ngừng phát triển: Nên dùng gì thay thế?
2 ngày -

Một vạn bằng bao nhiêu?
2 ngày 4 -

6 cách dễ nhất để thêm nhạc vào video trên máy tính
2 ngày -

Sửa lỗi Full Disk 100% trên Windows với 14 thủ thuật sau
2 ngày -

Hướng dẫn đổi code Free Fire và code mới nhất tháng 11/2025
2 ngày 100+ -

Chuột lang nước: Loài chuột khổng lồ nặng tới 68kg, ung dung giữa đàn cá sấu nhờ khả năng đặc biệt
2 ngày -

Tra cứu điểm VnEdu 2026 trên điện thoại, máy tính như nào?
2 ngày -

Code Võ Hồn Đại Lục mới nhất, cập nhật liên tục 27/02/2026
2 ngày
Học IT
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Prompt
Ô tô, Xe máy