如何自动为Matplotlib多股票折线图添加Stock Ticker标签
解决方案:自动分组绘制带股票代码标签的股价折线图
原代码问题分析
- 未按
Stock Ticker分组,所有数据被绘制为单条折线 - 坐标轴标签设置错误:重复使用
set_label,应分别用set_xlabel和set_ylabel - 未处理日期格式,可能导致x轴显示混乱
修正后代码
import matplotlib.pyplot as plt import pandas as pd # 读取数据并标准化日期格式 df = pd.read_csv('Stock Data.csv') df['Date'] = pd.to_datetime(df['Date']) # 转换为datetime类型,优化时间轴显示 # 创建绘图对象 fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained') # 按股票代码分组,自动遍历绘制折线 for ticker, group in df.groupby('Stock Ticker'): ax.plot(group['Date'], group['Close'], label=ticker) # 设置图表元素 ax.set_xlabel('Date') ax.set_ylabel('Close Price') ax.set_title('Airline Stock Returns (2022)') # 显示自动生成的图例(标签为股票代码) ax.legend() # 可选:旋转x轴日期标签,避免重叠 plt.xticks(rotation=45) plt.show()
关键说明
- 自动分组逻辑:
df.groupby('Stock Ticker')会自动识别所有唯一股票代码,后续新增公司无需修改代码,直接适配 - 标签自动生成:循环中的
ticker变量就是当前分组的股票代码,直接作为plot的label参数,图例会自动对应每条折线 - 日期处理:转换为
datetime类型后,Matplotlib会自动优化x轴的日期刻度和显示顺序 - 坐标轴标签修正:用
set_xlabel和set_ylabel分别设置x、y轴的标签,替代原代码的错误用法
额外优化建议
- 如果CSV日期格式非标准,可在
pd.to_datetime中指定格式,例如:pd.to_datetime(df['Date'], format='%Y/%m/%d') - 若图例遮挡图表,可调整位置:
ax.legend(loc='upper right')或ax.legend(bbox_to_anchor=(1.02, 1), loc='upper left')将图例放在图外
内容的提问来源于stack exchange,提问作者user19891327
相关产品推荐
相关产品推荐

