HTML5 Canvas 绘制股市走势图
<canvas id="myChart" width="800" height="400"></canvas>
const canvas = document.getElementById('myChart');
const ctx = canvas.getContext('2d');
const canvas = document.getElementById('myChart');
const ctx = canvas.getContext('2d');
// 假设数据
const data = [
{ time: '2023-11-01', price: 100 },
{ time: '2023-11-02', price: 110 },
// ...更多数据
];
// 定义坐标轴范围
const margin = 50;
const width = canvas.width - margin * 2;
const height = canvas.height - margin * 2;
const xMin = data[0].time;
const xMax = data[data.length - 1].time;
const yMin = Math.min(...data.map(d => d.price));
const yMax = Math.max(...data.map(d => d.price));
// 绘制坐标轴
ctx.beginPath();
ctx.moveTo(margin, margin);
ctx.lineTo(margin, height + margin);
ctx.lineTo(width + margin, height + margin);
ctx.stroke();
// 绘制数据点
ctx.beginPath();
data.forEach((d, i) => {
const x = map(d.time, xMin, xMax, margin, width + margin);
const y = map(d.price, yMax, yMin, margin, height + margin);
if (i === 0) {
ctx.moveTo(x, y);
} else {
ctx.lineTo(x, y);
}
});
ctx.stroke();
// 映射函数
function map(value, from1, to1, from2, to2) {
return (value - from1) / (to1 - from1) * (to2 - from2) + from2;
}
更多深入学习,可以参考以下资源:
想了解更多关于某个特定功能的实现,欢迎提出更具体的问题。
例如,你可以问:
我将尽力为你解答。