Matplotlib绘制AAPL收盘价时坐标轴输出错误如何解决
问题原因
- 调用
plt.plot()时仅传入了收盘价序列,未指定x轴为日期列,matplotlib默认使用DataFrame整数索引作为x轴,导致日期无法正常展示 - yfinance返回的数据集默认索引已经是
datetime64类型的日期,多余的reset_index和日期格式转换操作非必需,也可能引发格式匹配问题
修复方案
修改后的可运行代码如下:
import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates %matplotlib inline import seaborn as sns sns.set() import yfinance as yf # 下载数据,返回结果默认索引即为标准日期格式,无需额外转换 df = yf.download('AAPL', start='2001-01-01', end='2005-12-31', progress=False) df.dropna(how='any', inplace=True) plt.figure(figsize=(10,6)) plt.grid(True) plt.xlabel('Dates') plt.ylabel('Prices') # 显式指定x轴为日期索引、y轴为收盘价 plt.plot(df.index, df['Close']) # 自动调整日期刻度格式,避免标签重叠 plt.gcf().autofmt_xdate() plt.title('AAPL Close Price', fontsize=16) plt.show()
如果需要保留原代码中手动处理日期列的逻辑,仅需将绘图行修改为plt.plot(df['Date'], df['Close'])即可解决坐标轴显示异常问题。
内容的提问来源于stack exchange,提问作者Wind
相关产品推荐
相关产品推荐

