如何使用子图绘制 nrows=12,ncols=2
How to use subplot to plot nrows=12,ncols=2
我正在尝试使用子图绘制 12x2(行 x 列)。但是,我的代码似乎在同一个图形上绘制了所有 12 个图形 12 次。我在下面附上了我的代码,如果有人能帮助我理解我哪里出错了,那真的对我有帮助。
注意:我正在从两个不同的文件夹中读取数据。第一列对应于文件夹中第一个文件的绘图,第二列对应于第二个文件。
我想分别在位置 [0,0] 和 [0,1] 中绘制来自第一个文件和第二个文件的第一个数据。我想对所有 12 个文件重复此操作。
fig, axs = plt.subplots(12, 2,figsize=(20,80))
for file in files: # reading data from 1st file
with open(file,"r") as f_in:
reader=csv.reader(f_in)
next(reader)
for line in reader:
try:
float_1,float_2=float(line[0]),float(line[1])
xData.append(float_1)
yData.append(float_2)
except ValueError:
continue
for i in range(12):
axs[i,0].plot(xData,yData)
xData=[]
yData=[]
for file in files1:
with open(file,"r") as f_in:
reader=csv.reader(f_in)
next(reader)
for line in reader:
try:
float_1,float_2=float(line[0]),float(line[1])
xData1.append(float_1)
yData1.append(float_2)
except ValueError:
continue
for i in range(12):
axs[i, 1].plot(xData1, yData1)
xData1=[]
yData1=[]
在您的代码中,您正在绘制每个文件 axs[i,0].plot(xData,yData)
和 axs[i,1].plot(xData1,yData1)
的所有图,因为您在一个循环 (for file in files1
) 中有一个循环 (for i in range(12)
) .
下面是代码中此错误的快速修复方法:
fig, axs = plt.subplots(12, 2,figsize=(20,80))
i = 0
for file in files: # reading data from 1st file
with open(file,"r") as f_in:
reader=csv.reader(f_in)
next(reader)
for line in reader:
try:
float_1,float_2=float(line[0]),float(line[1])
xData.append(float_1)
yData.append(float_2)
except ValueError:
continue
axs[i,0].plot(xData,yData)
i+=1
xData=[]
yData=[]
i = 0
for file in files1:
with open(file,"r") as f_in:
reader=csv.reader(f_in)
next(reader)
for line in reader:
try:
float_1,float_2=float(line[0]),float(line[1])
xData1.append(float_1)
yData1.append(float_2)
except ValueError:
continue
axs[i, 1].plot(xData1, yData1)
i+=1
xData1=[]
yData1=[]
注意。当然文件数不能超过12个,否则会出现IndexError
NB.2 有很多更好的方法来组织代码,理想的可能是创建一个函数,将文件和轴对象作为参数并在该轴上绘制文件的数据。然后你可以遍历轴。
我正在尝试使用子图绘制 12x2(行 x 列)。但是,我的代码似乎在同一个图形上绘制了所有 12 个图形 12 次。我在下面附上了我的代码,如果有人能帮助我理解我哪里出错了,那真的对我有帮助。
注意:我正在从两个不同的文件夹中读取数据。第一列对应于文件夹中第一个文件的绘图,第二列对应于第二个文件。
我想分别在位置 [0,0] 和 [0,1] 中绘制来自第一个文件和第二个文件的第一个数据。我想对所有 12 个文件重复此操作。
fig, axs = plt.subplots(12, 2,figsize=(20,80))
for file in files: # reading data from 1st file
with open(file,"r") as f_in:
reader=csv.reader(f_in)
next(reader)
for line in reader:
try:
float_1,float_2=float(line[0]),float(line[1])
xData.append(float_1)
yData.append(float_2)
except ValueError:
continue
for i in range(12):
axs[i,0].plot(xData,yData)
xData=[]
yData=[]
for file in files1:
with open(file,"r") as f_in:
reader=csv.reader(f_in)
next(reader)
for line in reader:
try:
float_1,float_2=float(line[0]),float(line[1])
xData1.append(float_1)
yData1.append(float_2)
except ValueError:
continue
for i in range(12):
axs[i, 1].plot(xData1, yData1)
xData1=[]
yData1=[]
在您的代码中,您正在绘制每个文件 axs[i,0].plot(xData,yData)
和 axs[i,1].plot(xData1,yData1)
的所有图,因为您在一个循环 (for file in files1
) 中有一个循环 (for i in range(12)
) .
下面是代码中此错误的快速修复方法:
fig, axs = plt.subplots(12, 2,figsize=(20,80))
i = 0
for file in files: # reading data from 1st file
with open(file,"r") as f_in:
reader=csv.reader(f_in)
next(reader)
for line in reader:
try:
float_1,float_2=float(line[0]),float(line[1])
xData.append(float_1)
yData.append(float_2)
except ValueError:
continue
axs[i,0].plot(xData,yData)
i+=1
xData=[]
yData=[]
i = 0
for file in files1:
with open(file,"r") as f_in:
reader=csv.reader(f_in)
next(reader)
for line in reader:
try:
float_1,float_2=float(line[0]),float(line[1])
xData1.append(float_1)
yData1.append(float_2)
except ValueError:
continue
axs[i, 1].plot(xData1, yData1)
i+=1
xData1=[]
yData1=[]
注意。当然文件数不能超过12个,否则会出现IndexError
NB.2 有很多更好的方法来组织代码,理想的可能是创建一个函数,将文件和轴对象作为参数并在该轴上绘制文件的数据。然后你可以遍历轴。