ValueError:年份超出范围pyplot

时间:2016-04-14 22:50:11

标签: python matplotlib

midpoint_to

我正在遍历目录中的文件,并将所有图形保存为pdf文件。日期采用以下格式import os from matplotlib.backends.backend_pdf import PdfPages import pandas as pd import matplotlib.pyplot as plt import datetime as dt pp = PdfPages('multipage.pdf') pth = "D:/Technical_Data/" for fle in os.listdir(pth): df = pd.read_csv(os.path.join(pth, fle),usecols=(0, 4)) if not df.empty: df=df.astype(float) days = df['indx'] value = df['Close'] plt.plot_date(x=days, y=value,fmt="r-") plt.title(fle) plt.ylabel("Price") plt.grid(True) pp.savefig() pp.close()

但它会引发错误:

  

ValueError:年份超出范围

示例数据

20150101

2 个答案:

答案 0 :(得分:1)

问题是天数列表的格式。您必须将这些值转换为DateTime类型或浮点表示自0001-01-01 UTC以来的天数。

来自matplotlib.pyplot documentation

  

plot_date(x,y,fmt =' bo',tz = None,xdate = True,ydate = False,** kwargs)

     

x和/或y可以是自0001-01-01 UTC以来表示为浮动天数的日期序列。

答案 1 :(得分:0)

您需要将df ['indx']转换为pandas DatetimeIndex

# df=df.astype(float) # do not covert yymmdd to float
days = pd.to_datetime(df['indx'].astype(str), format='%Y%m%d')
plt.plot_date(x=days, y=value, fmt="r-")