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

<!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点数解答]

相关提问