[英]loop over many files and plot them
Thanks for the time spending reading it, maybe it is a simple question. 感谢您花时间阅读它,也许这是一个简单的问题。 I have a file like this (they are like 200 files):
我有一个像这样的文件(它们像200个文件):
Output of SMC2FS2: FAS for file 20123427.CB2A.BHE.sac.smc
Nfreq_out =
8192
freq fas
0.0000000E+00 6.6406252E-03
2.4414062E-03 1.3868844E+04
4.8828125E-03 3.0740834E+04
7.3242188E-03 2.7857139E+04
9.7656250E-03 1.6535047E+04
1.2207031E-02 9.7825762E+03
1.4648438E-02 6.1421987E+03
1.7089844E-02 6.5783145E+03
1.9531250E-02 5.6137949E+03
2.1972656E-02 3.5297178E+03
To read them, to skip the header and to start the processing: 要读取它们,请跳过标题并开始处理:
#define the path where I have the 200 files
pato='D:\\Seismic_Inves\\flc_grant\\120427\\smc2fs\\smooth'
os.chdir(pato)
lista=[]
#list all files with "kono_"
for a in glob.glob('*kono_*'):
lista.append(a)
#read and skip the header for all files
for archis in lista:
with open(archis,'r') as leo:
for _ in range(4):
next(leo)
#start the proccesing
for line in leo:
leo=[x.strip() for x in leo if x.strip()]
leos=[tuple(map(float,x.split())) for x in leo[1:]]
f=[x[0] for x in leos]
fas=[x[1] for x in leos]
plt.figure(1)
plt.plot(f,fas,'r')
plt.yscale('log')
plt.xscale('log')
plt.show()
As you can imagine it is a plot of Frequency vs Amplitude (FAS plot) The code works well, but open a figure and plot just one file, then I need to close the figure and it will plot the second file and so on. 可以想象,它是频率与幅度的关系图(FAS曲线),代码效果很好,但是打开一个图形并仅绘制一个文件,然后我需要关闭该图形,它将绘制第二个文件,依此类推。
The question is: 问题是:
How can I plot all the data (the 200 fcsv iles) in just one figure.
我如何在一张图中绘制所有数据(200个fcsv文件)。
to @GlobalTraveler, this is the result using your suggestion:
到@GlobalTraveler,这是使用您的建议的结果:
Add the block argument to show -> plt.show(block = False) or move show outside the for loop 将block参数添加到show-> plt.show(block = False)或将show移动到for循环之外
However in the grandscheme of things I would suggest moving the code to more OO approach. 但是,从总体上讲,我建议将代码移至更多面向对象的方法。 For example:
例如:
#define the path where I have the 200 files
from matplotlib.pyplot import subplots, show
pato='D:\\Seismic_Inves\\flc_grant\\120427\\smc2fs\\smooth'
os.chdir(pato)
lista=[]
#list all files with "kono_"
for a in glob.glob('*kono_*'):
lista.append(a)
#read and skip the header for all files
fig, ax = subplots() # open figure and create axis
for archis in lista:
with open(archis,'r') as leo:
for _ in range(4):
next(leo)
#start the proccesing
for line in leo:
leo=[x.strip() for x in leo if x.strip()]
leos=[tuple(map(float,x.split())) for x in leo[1:]]
f=[x[0] for x in leos]
fas=[x[1] for x in leos]
ax.plot(f,fas,'r') # plot on this axis
ax.set(**dict(xscale = 'log', yscale = 'log')) # format the axis
show() # show
it is the result with your suggestion FAS_konoomachi_smooth 这是您的建议的结果FAS_konoomachi_smooth
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.