上一篇
<!-- 通过CDN引入(推荐) --> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<canvas id="myLineChart" width="400" height="200"></canvas>
const ctx = document.getElementById('myLineChart').getContext('2d'); const myChart = new Chart(ctx, { type: 'line', // 指定图表类型为折线图 data: { labels: ['一月', '二月', '三月', '四月', '五月', '六月', '七月'], // X轴标签 datasets: [{ label: '销售额(万元)', // 数据集名称 data: [65, 59, 80, 81, 56, 55, 40], // Y轴数据 fill: false, // 不填充折线下方区域 borderColor: 'rgb(75, 192, 192)', // 折线颜色 tension: 0.1, // 折线弯曲度(0为直线) pointStyle: 'circle', // 数据点样式 pointRadius: 5 // 数据点半径 }] }, options: { responsive: true, // 响应式布局 scales: { y: { beginAtZero: true, // Y轴从0开始 title: { display: true, text: '数值' } // Y轴标题 }, x: { title: { display: true, text: '月份' } // X轴标题 } } } });
// 添加新数据点 function addData(chart, label, value) { chart.data.labels.push(label); chart.data.datasets[0].data.push(value); chart.update(); // 触发重绘 } // 删除最后一个数据点 function removeData(chart) { chart.data.labels.pop(); chart.data.datasets[0].data.pop(); chart.update(); }
// 窗口大小变化时自动调整 window.addEventListener('resize', () => { myChart.resize(); });
const gradient = ctx.createLinearGradient(0, 0, 0, 400); gradient.addColorStop(0, 'rgba(255, 99, 132, 0.5)'); gradient.addColorStop(1, 'rgba(255, 99, 132, 0)');
datasets: [{ backgroundColor: gradient, borderColor: 'rgb(255, 99, 132)', // ...其他配置 }]
- **数据点高亮**:
```javascript
options: {
plugins: {
tooltip: {
backgroundColor: 'rgba(0, 0, 0, 0.8)',
titleFont: { size: 14 },
bodySpacing: 4
}
}
}
datasets: [ { label: '产品A', data: [10, 20, 30], borderColor: 'blue' }, { label: '产品B', data: [15, 25, 35], borderColor: 'red' } ]
scales: { x: { type: 'time', time: { unit: 'month', // 按月显示 tooltipFormat: 'MMM YY' // 提示框格式 } } }
type: 'bar', // 主图表类型为柱状图 data: { datasets: [ { type: 'line', label: '趋势线', data: [...], fill: false }, { type: 'bar', label: '柱状数据', data: [...] } ] }
// 生成图片URL const imageUrl = myChart.toBase64Image(); // 下载图片 const link = document.createElement('a'); link.href = imageUrl; link.download = 'chart.png'; link.click();
大数据集优化:
options: { dataset: { decimation: { enabled: true, algorithm: 'lttb' } // 降采样算法 } }
懒加载初始化:
// 在用户滚动到可视区域时再初始化图表 const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { initChart(); // 初始化图表函数 observer.unobserve(entry.target); } }); }); observer.observe(document.getElementById('chart-container'));
Q:图表不显示?
Q:如何禁用动画?
options: { animation: { duration: 0 } }
Q:移动端显示模糊?
canvas { -ms-touch-action: none; touch-action: none; image-rendering: pixelated; }
通过以上步骤和技巧,您可以快速创建出专业且交互性强的折线图!🎉
本文由 业务大全 于2025-08-21发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://cloud.7tqx.com/wenda/682213.html
发表评论