1. 绘制股票收盘价折线图

绘制股票收盘价折线图 学习卡片

任务说明

本案例使用Python从本地CSV文件读取股票历史日线数据,绘制收盘价随时间变化的折线图,并保存为PNG图片。数据文件包含日期和收盘价两列,代码将完成数据加载、解析、绘图与保存的完整流程。

数据准备

在代码同级目录下创建 stock_data.csv,内容为示例数据(前5行):


date,close
2024-01-02,152.35
2024-01-03,153.20
2024-01-04,151.85
2024-01-05,154.60

实现代码


import csv
from datetime import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 1. 读取CSV数据
dates = []
prices = []
with open('stock_data.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        dates.append(datetime.strptime(row['date'], '%Y-%m-%d'))
        prices.append(float(row['close']))

# 2. 绘制折线图
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(dates, prices, color='#1f77b4', linewidth=1.8, marker='o', markersize=4)

# 3. 图表装饰
ax.set_title('Stock Closing Price Trend', fontsize=14, pad=15)
ax.set_xlabel('Date', fontsize=11)
ax.set_ylabel('Close Price (USD)', fontsize=11)
ax.grid(True, linestyle='--', alpha=0.6)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
fig.autofmt_xdate(rotation=45)

# 4. 保存与显示
plt.tight_layout()
plt.savefig('stock_close_price.png', dpi=150)
plt.show()

运行方式

确保已安装matplotlib库(pip install matplotlib),在代码文件所在目录执行:

python stock_line_chart.py

验证方法

运行后观察:

  • 控制台无报错,弹出窗口显示折线图;
  • 当前目录生成 stock_close_price.png 文件;
  • 图中横轴为日期(自动倾斜45度),纵轴为收盘价,数据点与CSV中数值一一对应;
  • 折线连接顺序与CSV行序一致,无跳点或错位。

判定通过标准:图片文件成功生成,且图中每个数据点的纵坐标与CSV中对应行的close值完全吻合。

数据流与验证路径 stock_data.csv date, close 2024-01-02, 152.35 2024-01-03, 153.20 csv.DictReader datetime.strptime float(close) → dates[], prices[] ax.plot(dates, prices) 折线 + 圆点标记 日期格式化 + 网格 tight_layout 输出产物 ① 屏幕显示折线图 ② stock_close_price.png 验证观测点 ① 图片文件是否生成成功 ② 图中每个点纵坐标与CSV中close值逐一对应 判定通过标准 PNG文件成功生成,且图中数据点纵坐标与CSV中close值完全一致,无缺失或错位