酷代码 AI
菜单
全部AI  /  AI写代码神器
服务商

<!DOCTYPE html> <html> <head> <title>从优秀到卓越:数据对比</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.0.0"></script> <style> .container { width: 90%; margin: 20px auto; position: relative; } .btn-group { text-align: center; margin: 20px 0; } button { background: #2c3e50; c

看起来你提供的代码还未完整,`callbacks` 里的 `label` 函数没有写完。下面我先假设你想在 `label` 函数里自定义提示框显示的内容,我将补充完整并对代码进行优化,同时给出需要注意的逻辑点。 ```html <!DOCTYPE html> <html> <head> <title>从优秀到卓越:数据对比</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.0.0"></script> <style> .container { width: 90%; margin: 20px auto; position: relative; } .btn-group { text-align: center; margin: 20px 0; } button { background: #2c3e50; color: white; border: none; padding: 12px 24px; border-radius: 30px; cursor: pointer; font-size: 16px; transition: all 0.3s; margin: 0 10px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } button:hover { background: #1a252f; transform: translateY(-2px); box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15); } .chart-container { background: white; border-radius: 15px; padding: 20px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); } h2 { text-align: center; color: #2c3e50; margin-bottom: 30px; font-family: 'Arial', sans-serif; } .quote { font-style: italic; text-align: center; margin-top: 20px; color: #7f8c8d; } </style> </head> <body> <div class="container"> <h2>《从优秀到卓越》核心数据对比</h2> <div class="btn-group"> <button id="saveBtn">保存图表为图片</button> <button id="resetBtn">重置视图</button> </div> <div class="chart-container"> <canvas id="comparisonChart"></canvas> </div> <p class="quote">"优秀是卓越的大敌,这并非因为优秀不好,而是因为优秀容易让人满足" - 吉姆·柯林斯</p> </div> <script> // 研究数据 const dimensions = [ "CEO内部提拔率", "转型持续时间(年)", "初期裁员率(%)", "理念明确时间(年)", "股价收益率(倍数)" ]; const excellentData = [90, 7.8, 25, 4, 3]; const comparisonData = [35, 3.2, 10, 0, 0.8]; // 创建图表 const ctx = document.getElementById('comparisonChart').getContext('2d'); const chart = new Chart(ctx, { type: 'bar', data: { labels: dimensions, datasets: [ { label: '实现跨越的公司 (11家)', data: excellentData, backgroundColor: 'rgba(46, 204, 113, 0.8)', borderColor: 'rgba(39, 174, 96, 1)', borderWidth: 2, borderRadius: 5 }, { label: '对照公司 (17家)', data: comparisonData, backgroundColor: 'rgba(231, 76, 60, 0.8)', borderColor: 'rgba(192, 57, 43, 1)', borderWidth: 2, borderRadius: 5 } ] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'top', labels: { font: { size: 14, family: "'Arial', sans-serif" }, padding: 20 } }, tooltip: { backgroundColor: 'rgba(0, 0, 0, 0.7)', titleFont: { size: 14 }, bodyFont: { size: 13 }, padding: 12, displayColors: false, callbacks: { // 自定义提示框显示内容 label: function (context) { let label = context.dataset.label || ''; if (label) { label += ': '; } label += context.parsed.y; // 根据维度添加不同的单位 if (context.label === "CEO内部提拔率" || context.label === "初期裁员率(%)") { label += '%'; } else if (context.label === "转型持续时间(年)" || context.label === "理念明确时间(年)") { label += ' 年'; } return label; } } } } } }); // 保存图表为图片功能 const saveBtn = document.getElementById('saveBtn'); saveBtn.addEventListener('click', function () { const url = chart.toBase64Image(); const a = document.createElement('a'); a.href = url; a.download = 'comparison_chart.png'; a.click(); }); // 重置视图功能 const resetBtn = document.getElementById('resetBtn'); resetBtn.addEventListener('click', function () { chart.resetZoom(); }); </script> </body> </html> ``` 代码说明: 1. `tooltip` 的 `callbacks` 里的 `label` 函数:自定义了提示框显示的内容,根据不同的维度添加了相应的单位。 2. 保存图表为图片功能:给 `saveBtn` 按钮添加了点击事件监听器,点击后将图表转换为 `base64` 图片并下载。 3. 重置视图功能:给 `resetBtn` 按钮添加了点击事件监听器,点击后重置图表的缩放。 额外需要注意的逻辑点: 1. 在修改 `dimensions` 数组时,要确保 `excellentData` 和 `comparisonData` 数组的长度与之匹配,否则图表可能无法正常显示。 2. 对于 `Chart.js` 的版本兼容性问题,不同版本的 API 可能会有所不同,如果后续更新版本,可能需要调整代码。 3. 在使用 `toBase64Image` 方法保存图表时,要注意浏览器的安全策略,某些情况下可能会因为跨域等问题导致保存失败。 [2025-06-26 15:47:17 | AI写代码神器 | 1719点数解答]

热门AI查看更多
“AI写代码神器”擅长各种语言编程、解释代码、注解补充。 在这里填写你的问题。如:写出java冒泡排序算法。
一个入口掌握所有。 在这输入任何问题,或者要AI输出的内容。
将阿拉伯数字转为人明币大写,如:数字1000转换为壹仟。
AI生成爆文标题,能够快速创作出极具吸引力的标题,促使短视频、自媒体文章的点击率与阅读量迅猛攀升。 此处填写一个原始标题,如:一般人怎样打理自身的社交圈?
AI生成新闻评论。 在这里填入新闻内容。
AI生成内容摘要。 在此处填入需要生成摘要的内容,还可以输入4000字。
AI生成主持词,擅长团建、年会、婚礼、节日等场合的主持词编写。 在这里填入主持场景,如:运动会
AI快速生成周报、月报、日报、年终总结等各类总结报告。 在这里简单输入工作目标、指标、成果,没有任何格式或特殊需求。如:计划年销售业绩1000万,实际完成800万。
输入一个字,显示以这个字开头的歇后语
输入一个字,显示以这个字开头的成语
极速在线生成证件照
极速更换证件照红、蓝、白底色
实用工具查看更多
阿里云99元2核2G服务器/年,199元2核4G服务器随心买。
今日油价 [生活类]
全国各省油价,实时更新。
图片互转base64 [开发类]
将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页、编辑器中。 这对于一些小的图片是极为方便的,因为你不需要再去寻找一个保存图片的地方。
时间转换器 [开发类]
时间戳转换器,时间、毫秒、秒、倒计时查看
录入名字、电话、邮箱、个人介绍信息,生成二维码,可通过此码扫码添加微信联系人
数独游戏 [娱乐类]
数独(Sudoku)是经典的9x9数字逻辑谜题。在有81个小格的九宫格内,玩家依据初始数字推理填入1 - 9的数字,要保证每行、每列以及每个3x3宫格中的数字都不重复。这款在线数独游戏有多难度可选,没有头绪时,可以点开答案看一下哦^_^
经典推箱子 [娱乐类]
基于H5的经典推箱子小游戏,锻炼玩家的眼力和反应力,非常不错
AI摸鱼五子棋 [娱乐类]
基于H5的五子棋人机对练,锻炼玩家的眼力和反应力,非常不错
相关提问