使用glob.glob函数读取文件夹中的所有excel文件,我正在输出多个图表(文件夹中的每个excel文件一个)。我想使用每个文件名的一部分作为标题在每个图上放置一个唯一的标题。当我运行此代码时,它将正确绘制每个唯一图的数据,但标题始终最终来自此列表中的最后一个excel文件。如何确保标题是从每个excel文件名中获取的,而不仅仅是最后一个?
path = "C:\\Users\\mgphi\\OneDrive\\Documents\\Research\\Cascades\\Profiles\\Error reporting\\cpx"
#Find all .xlsx files in given path
filenames = glob.glob(path+'\\*.xlsx')
fig = plt.figure(figsize=(7,5))
titles = str(filenames[i].split('\\')[-1])[0:7]
for i in range(0,len(filenames)):
years = np.asarray(pd.read_excel(filenames[i]))[:,0]
pdf = np.asarray(pd.read_excel(filenames[i]))[:,1]
#print(filenames[i].split('\\')[-1])
plt.figure()
plt.plot(years,pdf)
plt.ylim(0,.00006)
plt.title(titles)
plt.xlabel('years modeled')
plt.ylabel('1/misfit')
plt.show()
答案 0 :(得分:0)
@Michael Butscher的建议:
path = "C:\\Users\\mgphi\\OneDrive\\Documents\\Research\\Cascades\\Profiles\\Error reporting\\cpx"
#Find all .xlsx files in given path
filenames = glob.glob(path+'\\*.xlsx')
fig = plt.figure(figsize=(7,5))
for i in range(0,len(filenames)):
titles = str(filenames[i].split('\\')[-1])[0:7]
years = np.asarray(pd.read_excel(filenames[i]))[:,0]
pdf = np.asarray(pd.read_excel(filenames[i]))[:,1]
#print(filenames[i].split('\\')[-1])
plt.figure()
plt.plot(years,pdf)
plt.ylim(0,.00006)
plt.title(titles)
plt.xlabel('years modeled')
plt.ylabel('1/misfit')
plt.show()
虽然有些相关,但我认为可能对您的情况有用,如果要生成许多这样的图,则可能要使用Snakemake。因此,与其搜索文件名,不如使用Snakemake提供文件名,而不是将其留在脚本中以便于调试。