<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>1949-2025年中国能源生产电能来源分布</title> </head> <body> <div id="chart-container"></div> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script> // 定义年各份的能源数据 const data = { 1949: { labels: ['火电'], datasets: [{ data: [43], backgroundColor: ['#FF6384'], borderWidth: 1


代码分析与优化建议 问题分析 1. 数据重复:2020年和2023年的数据是一样的,这可能是数据录入错误。 2. 缺少2025年数据:根据“1949 - 2025年中国能源生产电能来源分布”,代码中没有2025年的数据。 3. 代码可维护性:数据和图表创建逻辑耦合在一起,不利于后续的数据更新和维护。 4. 样式问题:使用`<br>`来添加间距不是一个好的做法,建议使用CSS来控制样式。 优化后的代码 ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>1949 - 2025年中国能源生产电能来源分布</title> <style> /* 为图表容器添加样式 */ #chart-container { display: flex; flex-direction: column; align-items: center; gap: 20px; } /* 为每个图表的canvas添加样式 */ canvas { width: 400px; height: 400px; } </style> </head> <body> <div id="chart-container"></div> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script> // 定义各年份的能源数据 const energyData = { 1949: { labels: ['火电'], data: [43], }, 1978: { labels: ['火电', '水电'], data: [2070, 496], }, 2005: { labels: ['火电', '水电', '核电'], data: [28227, 6528, 622], }, 2020: { labels: ['火电', '水电', '核电', '风电', '太阳能'], data: [54529, 13559, 3662, 4655, 2611], }, 2023: { labels: ['火电', '水电', '核电', '风电', '太阳能'], data: [54529, 13559, 3662, 4655, 2611], }, // 这里可以添加2025年的数据 // 2025: { // labels: ['火电', '水电', '核电', '风电', '太阳能'], // data: [/* 具体数据 */], // } }; // 定义颜色数组 const colors = ['#FF6384', '#36A2EB', '#FFCE56', '#4BC0C0', '#9966FF']; // 创建图表容器 const container = document.getElementById('chart-container'); const years = Object.keys(energyData); // 添加页眉 const title = document.createElement('h1'); title.textContent = '1949 - 2025年中国能源生产电能来源分布'; title.style.textAlign = 'center'; container.appendChild(title); // 为每个年份创建饼图 years.forEach((year) => { const canvas = document.createElement('canvas'); canvas.id = `pie-chart-${year}`; container.appendChild(canvas); // 处理数据集 const datasets = [{ data: energyData[year].data, backgroundColor: energyData[year].labels.map((_, index) => colors[index]), borderWidth: 1 }]; // 创建饼图 new Chart(canvas, { type: 'pie', data: { labels: energyData[year].labels, datasets: datasets }, options: { responsive: true, maintainAspectRatio: false, plugins: { title: { display: true, text: `${year}年中国能源发电结构`, font: { size: 16 } }, legend: { position: 'bottom' } } } }); }); // 添加说明 const description = document.createElement('p'); description.textContent = '注:饼图展示了不同年份中国主要发电方式的发电量占比,反映了我国能源结构的变迁'; description.style.textAlign = 'center'; description.style.marginTop = '20px'; container.appendChild(description); </script> </body> </html> ``` 额外需要注意的逻辑点 1. 数据更新:当需要更新数据时,只需要修改`energyData`对象中的数据即可,不需要修改图表创建的逻辑。 2. 颜色管理:颜色数组`colors`的长度需要根据可能的最大标签数量来设置,确保不会出现颜色不足的情况。 3. 数据准确性:在添加新的年份数据时,要确保`labels`和`data`数组的长度一致,避免出现数据不匹配的问题。 [2025-07-04 15:45:11 | AI写代码神器 | 1238点数解答]
- <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>1949-2025年中国能源生产电能来源分布</title> </head> <body> <div id="chart-container"></div> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script> // 定义年各份的能源数据 const data = { 1949: { labels: ['火电'], datasets: [{ data: [43], backgroundColor: ['#FF6384'], borderWidth: 1 (1238点数解答 | 2025-07-04 15:45:11)47
- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>地质灾害监测数据折线图</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-annotation@1.0.2"></script> </head> <body> <div style="width: 800px; margin: auto;"> <canvas id="myChart"></canvas> </div> <script> // 监测数据 const data = { (183点数解答 | 2025-03-12 21:19:50)164
- <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <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> body { font-family: 'Arial', sans-serif; background: linear-gradient(135deg, #1a2a6c, #b21f1f, #fdbb2d); margin: 0; (1334点数解答 | 2025-05-03 10:17:27)158
- <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>工程项目里程碑节点</title> <script src="https://cdn.jsdelivr.net/npm/exceljs/dist/exceljs.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/file-saver/dist/FileSaver.min.js"></script> <style> body { font-family: Arial, sans-serif; margin: 20px; line-height: 1.6; } h1 { (310点数解答 | 2025-05-22 07:42:44)105
- <!DOCTYPE html> <html> <head> <title>英语课堂活动层级变化趋势</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> </head> <body> <canvas id="myChart" width="600" height="400"></canvas> <script> // 数据配置 const data = { labels: ['低阶活动', '中阶活动', '高阶活动'], datasets: [{ label: '2021年', data: [65, 20, 15], backgroundColor: '#FFD700', borderColor: '#FFA500', borde(365点数解答 | 2025-02-22 21:54:32)122
- <!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(1719点数解答 | 2025-06-26 15:47:17)84
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(475点数解答 | 2024-12-19 14:58:05)240
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(495点数解答 | 2024-12-19 14:58:06)194
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(497点数解答 | 2024-12-19 14:58:18)201
- <!doctype html> <html lang="zh"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/mian.css"> <link rel="stylesheet" href="css/index.css"> <script src="js/jquery-3.3.1.min.js"></script> <script src="js/jquery-ui.min.js"></script> <script type="text/javascript"> // (1)创建js函数,使用jquery动画,实现ready事件 $(document). ____(1)____ (function(){ //ready事件 $('li').each(function(index){ //遍历对象 $(this).hover(function(){ //单击触发事件 $('li').animate({ width:100 },500); //删除当前元素的样式 $('li').eq(index).animate({ width:200 },500); }); }); }); </script> <title>首页</title> </head> <body> <header> <div class="logo"> <img src="img/logo.jpg" width="250" height="60"> </div> <form class="searchform"> <input type="text" name="search" id="search"/> <input type="submit" value="搜索" id="button"/> </form> <div class="navigation"> <a href="#">手机</a> | <a(497点数解答 | 2024-12-19 14:58:20)211
- <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>湖南2025届高考物理公式手册</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/docx/7.4.1/docx.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script> <script src="https://cdnjs.cloudflare.(405点数解答 | 2025-05-28 22:10:21)98
- <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>金属棒伸长量与温度的关系</title> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <style> body { font-family: Arial, sans-serif; margin: 20px; } .chart-container { width: 80%; max-width: 800px; margin: 0 auto; } </style> </head> <body> <h(159点数解答 | 2025-05-07 00:10:55)103