<canvas id="myCanvas" width="440" height="60"></canvas>
var sixdayHighTemperature = [5, 1, -12, -5, -10];
var sixdayLowTemperature = [-5, -10, -18, -18, -20];
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var picHeight = 60;
var maxHighTemp = maxNum(sixdayHighTemperature);
var minLowTemp = minNum(sixdayLowTemperature);
var maxRange = maxHighTemp - minLowTemp;
function maxNum(arr) {
var maxNum = 0;
if (arr.length) {
for (var i = 0, len = arr.length; i < len; i++) {
if (i == 0) {
maxNum = arr[0];
} else if (maxNum < arr[i]) {
maxNum = arr[i];
}
}
}
return maxNum;
}
function minNum(arr) {
var minNum = 0;
if (arr.length) {
for (var i = 0, len = arr.length; i < len; i++) {
if (i == 0) {
minNum = arr[0];
} else if (minNum > arr[i]) {
minNum = arr[i];
}
}
}
return minNum;
}
ctx.lineWidth = 2;
(function drawHighTemp(temps) {
ctx.beginPath();
ctx.strokeStyle = "#FF6666";
var drawX = 0,
drawY = 0;
var distance = Math.floor(picHeight / maxRange);
for (var i = 0, len = temps.length; i < len; i++) {
drawX = i * 85 + 42;
drawY = (maxHighTemp - temps[i]) * distance + 4;
if (i == 0) {
ctx.moveTo(drawX, drawY);
} else {
ctx.lineTo(drawX, drawY);
}
}
ctx.stroke();
ctx.closePath();
ctx.beginPath();
ctx.fillStyle = "#fff";
var drawX = 0,
drawY = 0;
var distance = Math.floor(picHeight / maxRange);
for (var i = 0, len = temps.length; i < len; i++) {
drawX = i * 85 + 42;
drawY = (maxHighTemp - temps[i]) * distance + 4;
ctx.arc(drawX, drawY, 3, 0, 2 * Math.PI, false);
ctx.fill();
ctx.closePath();
}
})(sixdayHighTemperature);
(function drawHighTemp(temps) {
ctx.strokeStyle = "#50ABFF";
ctx.beginPath();
var drawX = 0,
drawY = 0;
var distance = Math.floor(picHeight / maxRange);
for (var i = 0, len = temps.length; i < len; i++) {
drawX = i * 85 + 42;
drawY = picHeight - (temps[i] - minLowTemp) * distance - 4;
if (i == 0) {
ctx.moveTo(drawX, drawY);
} else {
ctx.lineTo(drawX, drawY);
}
}
ctx.stroke();
ctx.closePath();
ctx.beginPath();
ctx.fillStyle = "#fff";
var drawX = 0,
drawY = 0;
var distance = Math.floor(picHeight / maxRange);
for (var i = 0, len = temps.length; i < len; i++) {
drawX = i * 85 + 42;
drawY = picHeight - (temps[i] - minLowTemp) * distance - 4;
ctx.arc(drawX, drawY, 3, 0, 2 * Math.PI, false);
ctx.fill();
ctx.closePath();
}
})(sixdayLowTemperature);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了