2013-06-29 150 views
0

我在一个文件夹中有大量的二进制和ascii文件。我正在使用glob模块阅读它们。处理二进制数据,以便我可以绘制它们。最后,我试图在一个子图中绘制简化的二进制数据,在另一个子图中绘制正常的ascii文件。我面临的问题是它可以为相应的二进制文件生成图表。但对于ASCII文件,它只是覆盖以前的文件,并始终生成相同的情节。下面是代码的一个示例 -python绘制覆盖数据

import glob 
import numpy as np 
from struct import unpack 
import matplotlib.pyplot as plt 

chi = sorted(glob.glob('C:/Users/Desktop/bin/*.chi')) 

for index,fh in enumerate(chi): 
    data = np.genfromtxt(fh, dtype = float) 
    x = [row[0] for row in data] 
    y = [row[1] for row in data] 

binary = sorted(glob.glob('C:/Users/Desktop/bin/*.bin')) 

for count,FILE in enumerate(binary): 
    F = open(FILE,'rb') 
    B = unpack('f'*1023183, F.read(4*1023183)) 
    A = np.array(B).reshape(1043, 981) 
    F.close() 

    #a = something column 1 # some further processing 
    #b = something column 2 # and generates 1D data 

    fig = plt.figure(figsize=(11, 8.0)) 

    ax1 =fig.add_subplot(211,axisbg='w') 
    ax1.plot(a,b) 

    ax2 =fig.add_subplot(212, axisbg ='w') 
    ax2.plot(x,y) 

    plt.show() 

的到简体版可有人请解释为什么文件只针对一组数据,其中另一组正确密谋策划过程中更换对方?

回答

1

在您的示例中循环的结构不正确,您必须在循环内的ascii文件中包含plot命令,否则只绘制最后一个。这应该工作:

尝试这样的:

import glob 
import numpy as np 
from struct import unpack 
import matplotlib.pyplot as plt 

fig = plt.figure(figsize=(11, 8.0)) 

chi = sorted(glob.glob('C:/Users/Desktop/bin/*.chi')) 

for index,fh in enumerate(chi): 
    data = np.genfromtxt(fh, dtype = float) 
    x = [row[0] for row in data] 
    y = [row[1] for row in data] 

    ax1 =fig.add_subplot(211, axisbg ='w') 
    ax1.plot(x,y) 


binary = sorted(glob.glob('C:/Users/Desktop/bin/*.bin')) 

for count,FILE in enumerate(binary): 
    F = open(FILE,'rb') 
    B = unpack('f'*1023183, F.read(4*1023183)) 
    A = np.array(B).reshape(1043, 981) 
    F.close() 

    #a = something column 1 # some further processing 
    #b = something column 2 # and generates 1D data 


    ax2 =fig.add_subplot(212,axisbg='w') 
    ax2.plot(a,b) 

plt.show()