循环遍历文件和绘图(Python)



数据如下图所示。我所有的数据都是。txt格式,我的目标是遍历文件并绘制它们。第一行表示变量(WL, ABS, T%)所以首先我需要在继续之前删除它们。

with open('Desktop/100-3.txt', 'r') as f:
data = f.read().splitlines(True)
with open('Desktop/100-3.txt', 'w') as f:
f.writelines(data[1:])

可能没有必要,但我是Numpy的新手。基本算法如下:

  1. 读取所有。txt文件
  2. T% vs WL, ABS vs WL,保存。(WL -> x变量)
  3. 继续下一个文件,…(每个.txt文件两个图形)
  4. 然后完成循环,退出。

数据看起来像这样

What I've try

from numpy import loadtxt
import os
dizin = os.listdir(os.getcwd())
for i in dizin:
  if i.endswith('.txt'):
   data = loadtxt("??",float)

对于这样的数据文件,我更喜欢np。genfromtext/np。它有很多有用的选项,你可以在文档中查找。glob模块还可以很好地迭代使用通配符作为过滤器的目录:

from glob import glob
import numpy as np
import matplotlib.pyplot as plt
# loop over all files in the current directory ending with .txt
for fname in glob("./*.txt"):
    # read file, skip header (1 line) and unpack into 3 variables
    WL, ABS, T = np.genfromtxt(fname, skip_header=1, unpack=True)
    # first plot
    plt.plot(WL, T)
    plt.xlabel('WL')
    plt.ylabel('T%')
    plt.show()
    plt.clf()
    # second plot
    plt.plot(ABS, T)
    plt.xlabel('WL')
    plt.ylabel('ABS')
    plt.show()
    plt.clf()

下一步是在matplotlib上做一些研究,使图看起来更好。

请让我知道,如果代码不工作,我会尝试修复它。

编辑:添加plt.clf()在创建新图形之前清除图形

最新更新