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
答案 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-")