2017-05-03 4 views
1

glob()을 사용하여 두 데이터 파일 "data_1.txt"(2 차 함수) 및 "data_2.txt"(3 차 함수) 와일드 카드 *.파이썬 오류 : glob를 사용하여 여러 데이터 파일을 플로팅하는 동안 추가 플롯

import numpy as np 
import matplotlib.pyplot as plt 
import glob 

#fig,ax = plt.subplots() 

path = "data_*.txt" 
for datafile in glob.glob(path): 

    #data = np.loadtxt(datafile) 
    data = np.genfromtxt(datafile) 
    #print(data) 
    #ax.plot(data) 
    plt.plot(data) 
    #plt.plot(data[:,0], data[:,1]) # This line works 

plt.show() 

그러나 추가 플롯 (빨간색 라인)이 생성됩니다. 내가 대신 plt.plot(data)plt.plot(data[:,0], data[:,1])를 사용하는 경우

enter image description here

은 빨간색 선은 더 이상 나타나지 않습니다.

설명이 있으십니까? 이 문맥에서 genfromtxtloadtxt 사이에 어떤 차이점이 있습니까?

답변

0

빨간 선은 실제로는 파란색 선과 빨간색 선이 서로 위에 있습니다. 그것들은 인덱스에 대해 플로팅 된 데이터 파일의 첫 번째 열입니다.

matplotlib의 plot 함수로 라인 플롯을 생성하려면 x 및 y 좌표 배열을 지정해야합니다. 하나의 옵션은 데이터를 압축하는 것입니다

data = np.genfromtxt(datafile) 
plt.plot(data[:,0],data[:,1]) 

또 다른 옵션을 사용하는 참이다. 따라서 2 열 데이터 파일의 경우

x,y = np.genfromtxt(datafile, unpack=True) 
plt.plot(x,y) 

두 옵션 모두 np.loadtxt에서도 동일하게 사용할 수 있습니다. 각각의 문서에서 genfromtxt에는 loadtxt보다 훨씬 더 많은 옵션이 있다는 것을 알게 될 것입니다. 이러한 추가 옵션은 머리글 또는 바닥 글 데이터를 제외하거나 누락 된 값을 바꾸는 데 유용 할 수 있습니다. 두 명령의 리턴 유형은 동일합니다.

+0

감사합니다. 내가 지정하지 않는다면,'plot'은 어떤 배열이 어떤 배열에 대해 그려지는지를 이해하지 못한다고 나는 생각한다. :) – hbaromega