【发布时间】:2021-01-02 07:23:27
【问题描述】:
我正在尝试使用 for 循环创建子图,其中数据基于多个 excelsheet。你可以看到下面的脚本。
#import libraries
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
#import the excel file
path ='F:\Backup\JN\TOR\TOR well py.xlsx'
data= pd.ExcelFile(path)
#some intro before getting into the for in loop
sheets = data.sheet_names
well = ''
totalsheets = len(sheets)
print(sheets)
print(totalsheets)
for n in range(totalsheets):
fig, axs=plt.subplots(1, totalsheets, figsize=(20,25))
for i in sheets:
well=pd.read_excel(data, sheet_name=i)
axs[n].set_xlabel('Temperature ($^o$C), Pressure (bar)')
axs[n].set_ylabel('Elevation (masl)')
axs[n].set_title(('Well-'+str(i)+ '\n' )+ (str(well['ket'][0])))
axs[n].plot(well['T'], well['mdpl pt'], marker='o', color='blue', label='Temperature')
axs[n].plot(well['P'], well['mdpl pt'], marker='o', color='crimson', label='Pressure')
脚本生成了 11 个子图(1 行 11 列),而不是获得 1 行 11 列的子图,其中每个子图代表每个数据表。子图上描绘的数据仅来自最后一张纸“P1”,它从第一列依次绘制到每个子图中,然后是第二、第三、第四等等(见下图,我只显示了 11 个中的 3 个数字)。
看到结果后,我认为我的 for 循环脚本有问题。请帮忙,非常感谢。
['E1', 'E2', 'E3', 'E4', 'G1', 'C1', 'C2', 'A1', 'A2', 'A3', 'P1']
11
在我将无花果移到 for 循环之外后,我成功地创建了一个包含 11 个子图的图。但是所有 11 个子图仅显示一张表(仅 P1)中的数据,而不是 excel 中的 11 个表来填充每个子图 ['E1','E2','E3','E4','G1',' C1','C2','A1','A2','A3','P1']。我错过了 for 循环脚本中的某些内容吗? (见下面的截图)
【问题讨论】:
-
你是否得到了 11 个这样的数字,一个接一个?
-
是的。我上面显示的只是十一个数字中的三个。
标签: python pandas for-loop matplotlib subplot