You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python绘制CO₂随时间变化曲线及年度均值计算问题求助

CO₂数据可视化任务解决方案

问题分析

原代码存在以下问题:

  • 仅将年份作为日期浮点数存储,导致每年12个月度数据点在X轴上重叠
  • 未计算并绘制年度平均CO₂浓度
  • 缺少轴标题、图例等可视化优化项

解决方案步骤


1. 修复日期表示

将每个月份转换为分数年份,公式为:年份 + (月份-1)/12,确保每个月度数据点在X轴上有唯一且均匀分布的位置。

2. 读取并处理数据

解析CSV中的年份、月份和CO₂浓度,计算分数日期并存储数据,同时累积年度数据用于后续平均计算。

3. 计算年度平均CO₂浓度

按年份分组,累加每个年份的CO₂总和与数据点数量,计算年度平均值。

4. 可视化优化

绘制月度数据曲线和年度平均曲线,添加轴标题、图例、网格等元素提升可读性。


完整代码

import matplotlib.pyplot as plt
import csv
from collections import defaultdict

# 初始化数据存储结构
月度日期 = []
月度CO₂ = []
年度累计数据 = defaultdict(lambda: {'总和': 0, '数量': 0})

# 读取并处理CSV数据
with open('co2_data.csv', 'r') as csv文件:
    数据读取器 = csv.reader(csv文件, delimiter=',')
    # 若CSV包含表头,取消下一行注释以跳过
    # next(数据读取器)
    
    for 行 in 数据读取器:
        年份 = int(行[0])
        月份 = int(行[1])
        CO₂浓度 = float(行[2])
        
        # 计算分数年份
        分数日期 = 年份 + (月份 - 1)/12
        月度日期.append(分数日期)
        月度CO₂.append(CO₂浓度)
        
        # 累积年度数据
        年度累计数据[年份]['总和'] += CO₂浓度
        年度累计数据[年份]['数量'] += 1

# 计算年度平均值
年度年份 = []
年度平均值 = []
for 年份 in sorted(年度累计数据.keys()):
    平均CO₂ = 年度累计数据[年份]['总和'] / 年度累计数据[年份]['数量']
    年度年份.append(年份)
    年度平均值.append(平均CO₂)

# 创建可视化图表
plt.figure(figsize=(12, 6))

# 绘制月度CO₂曲线
plt.plot(月度日期, 月度CO₂, 'b-', label='月度CO₂浓度', alpha=0.7)
# 绘制年度平均CO₂曲线
plt.plot(年度年份, 年度平均值, 'ro-', label='年度平均CO₂浓度', linewidth=2)

# 添加轴标题与图表标题
plt.xlabel('年份', fontsize=12)
plt.ylabel('CO₂浓度 (ppm)', fontsize=12)
plt.title('1960-2022年NASA月度与年度平均CO₂浓度变化', fontsize=14)

# 添加图例与网格
plt.legend(fontsize=10)
plt.grid(True, linestyle='--', alpha=0.5)

# 显示图表
plt.show()

代码说明

  • 分数年份转换:例如1960年1月为1960.0,12月为1960.9167,彻底解决数据点重叠问题
  • 年度平均计算:通过字典累积每个年份的CO₂总和与数据量,确保计算准确
  • 可视化区分:用蓝色线条表示月度数据,红色带标记的线条表示年度平均值,对比清晰
  • 可读性优化:添加网格、标题、图例,提升图表信息传递效率

内容的提问来源于stack exchange,提问作者Jack Robinson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:01:31