Matplotlib绘制ALB股票收盘价图空白报错求助
问题分析与解决
问题原因
你错误地直接对yf.Ticker对象ALBINFO使用['Close']索引——ALBINFO是Yahoo Finance的股票信息对象,并非存储历史数据的DataFrame,它本身没有Close列,所以调用ALBINFO['Close']会失败,导致绘图无数据,最终出现空白图表。
修复步骤
- 存储历史数据到DataFrame:调用
ALBINFO.history(period="2y")时,将返回的结果赋值给一个变量(比如alb_historical_data),这个变量才是包含日期、收盘价等字段的结构化DataFrame。 - 引用DataFrame的Close列绘图:绘图时使用这个DataFrame的
Close列即可获取收盘价数据。
修正后的完整代码
# imports import pandas as pd import yfinance as yf from datetime import date, timedelta from matplotlib import pyplot as plt import numpy as np plt.style.use('fivethirtyeight') # 获取Albemarle股票信息与历史数据 ALBINFO = yf.Ticker("ALB") # 将2年历史数据存储为DataFrame alb_historical_data = ALBINFO.history(period="2y") print(alb_historical_data) # 绘制收盘价走势 plt.figure(figsize = (12.2,4.5)) # 使用DataFrame中的Close列数据 plt.plot(alb_historical_data['Close'], label = 'Close') plt.xticks(rotation = 45) plt.title('ALB Close Price History (2 Years)') plt.xlabel('Date') plt.ylabel('Price USD') plt.legend() # 可选:添加图例显示标签 plt.show()
额外说明
- 原代码中
print(ALBINFO.history(period="2y"))仅打印数据但未保存,导致后续无法调用这些数据用于绘图。 - 添加
plt.legend()可以让图表显示图例,提升可读性。
内容的提问来源于stack exchange,提问作者John H.
相关产品推荐
相关产品推荐

