循环文件和绘图(Python)

时间:2016-09-24 12:23:01

标签: python numpy plot

我的数据如图所示。我的所有数据都是.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%与WL的关系,绘制ABS与WL的对比,保存。 (WL - > x变量)
  3. 继续下一个文件,..(每个.txt文件有两个图表)
  4. 然后完成循环,退出。
  5. data looks like this

    我尝试了什么

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

1 个答案:

答案 0 :(得分:1)

对于像这样的数据文件,我更喜欢np.genfromtxt而非np.loadtxt,它有许多有用的选项,你可以在文档中查找。 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()以在创建新图之前清除该图。