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
-
Code mẫu biểu đồ nhiều chuỗi dữ liệu trong JavaScript
-
Code JavaScript tạo biểu đồ/đồ thị động
-
Code mẫu biểu đồ được đồng bộ hóa trong JavaScript
-
Tổng hợp bài tập JavaScript có code mẫu
-
Code JavaScript tạo mẫu biểu đồ kết hợp OHLC và biểu đồ đường
-
Code JavaScript tạo mẫu biểu đồ & đồ thị động
-
Code mẫu JavaScript tạo biểu đồ/đồ thị với Zoom và Pan
-
Sự khác biệt giữa JavaScript và Python
-
JavaScript là gì?
Cũ vẫn chất
-
Cách khởi động và dừng các dịch vụ trong MS SQL Server
Hôm qua -
Cách sửa file MP4 bị hỏng với thủ thuật đơn giản
Hôm qua -
Đấu Trường Chân Lý Mobile (TFT Mobile)
-
Cách viết số mũ trong Excel, viết chỉ số trên, chỉ số dưới trong Excel
Hôm qua -
5 cách tắt Update Windows 11, ngừng cập nhật Win 11
Hôm qua 14 -
Black Friday là gì? Black Friday 2023 vào ngày nào?
Hôm qua -
200+biệt danh cho người yêu hay và hài hước
Hôm qua 5 -
Cách ẩn tin nhắn Telegram không cần xóa
Hôm qua -
30 lời chúc sinh nhật chồng yêu ý nghĩa và ngọt ngào
Hôm qua 1 -
Khắc phục lỗi mạng WiFi không hiển thị trên Windows 10
Hôm qua