上一篇
想象你是一个电商平台的开发者,每天要处理百万级用户行为数据,某天产品经理突然冲过来:"快!我要看实时销售趋势,还要能切换不同品类的对比!"这时候,你会选择: A. 熬夜手写SVG图表 😱 B. 用Chart.js+JSON实现动态更新 🚀
没错!本文将教你用Chart.js+JSON打造会"自己跳舞"的动态图表,让数据可视化像刷抖音一样丝滑!
<!-- CDN引入(推荐快速测试) --> <script src="https://cdn.jsdelivr.net/npm/chart.js@4.0.0/dist/chart.min.js"></script> <!-- npm安装(适合项目集成) --> npm install chart.js --save
<div style="width: 800px;"> <canvas id="salesChart"></canvas> </div>
{ "labels": ["电子产品", "服饰鞋包", "美妆个护", "食品生鲜"], "datasets": [{ "label": "2025年Q2销售额(亿元)", "data": [150, 90, 120, 80], "backgroundColor": [ "rgba(255, 99, 132, 0.6)", "rgba(54, 162, 235, 0.6)", "rgba(255, 206, 86, 0.6)", "rgba(75, 192, 192, 0.6)" ] }] }
// 获取canvas上下文 const ctx = document.getElementById('salesChart').getContext('2d'); // 初始化柱状图 const salesChart = new Chart(ctx, { type: 'bar', data: { /* 从JSON加载的数据 */ }, options: { responsive: true, scales: { y: { beginAtZero: true } }, plugins: { legend: { display: true }, tooltip: { enabled: true } } } });
// 模拟API请求获取新数据 fetch('/api/realtime-sales') .then(response => response.json()) .then(newData => { // 关键更新步骤 salesChart.data.datasets[0].data = newData.values; salesChart.update(); // 触发重绘 });
function switchToPieChart() { salesChart.destroy(); // 先销毁旧图表 // 重新初始化饼图 salesChart = new Chart(ctx, { type: 'pie', data: { /* 相同JSON数据 */ }, options: { /* 饼图专属配置 */ } }); }
options: { animation: { duration: 2000, // 2秒动画 easing: 'easeInOutQuad' } }
window.addEventListener('resize', () => { salesChart.resize(); // 自动适应容器大小 });
fetch('/api/data') .catch(error => { console.error('数据加载失败:', error); showErrorMessage("🚨 数据加载失败,请联系技术部!"); });
<!DOCTYPE html> <html> <head> <script src="https://cdn.jsdelivr.net/npm/chart.js@4.0.0"></script> </head> <body> <button onclick="updateData()">刷新数据</button> <canvas id="mainChart"></canvas> <script> const ctx = document.getElementById('mainChart').getContext('2d'); let chart = null; // 初始化图表 function initChart(data) { if (chart) chart.destroy(); chart = new Chart(ctx, { type: 'line', data: data, options: { responsive: true, animation: { duration: 1000 } } }); } // 模拟实时数据更新 function updateData() { const newData = { labels: ['10:00', '11:00', '12:00', '13:00'], datasets: [{ label: '实时销售额(万元)', data: [Math.random()*200, Math.random()*200, Math.random()*200, Math.random()*200], borderColor: 'rgb(75, 192, 192)' }] }; initChart(newData); } // 首次加载 updateData(); </script> </body> </html>
decimation
插件chartjs-plugin-datalabels
增强可读性💬 本文代码示例已适配Chart.js v4.0+,JSON数据格式参考自2025年8月最新电商实战案例,你已经掌握了让数据"自己跳舞"的魔法,快去惊艳你的产品经理吧!
本文由 业务大全 于2025-08-21发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://xdh.7tqx.com/wenda/683699.html
发表评论