Welcome to Jiyuniverse

[PySide6] numpy로 .txt 파일 불러와 matplotlib로 그래프 시각화하기 본문

Python/PyQt

[PySide6] numpy로 .txt 파일 불러와 matplotlib로 그래프 시각화하기

JJiiyun 2025. 1. 22. 14:21

 

2024-01-05에 작성된 글입니다. (블로그 이전)

 


csv 모듈을 이용해서 파일을 불러와도 되지만 더 간단하게 numpy를 사용하여 .txt 파일을 불러왔다.

 

1. 저번 글에서 파일 불러오기를 하여 얻은 파일 경로를 InputToPlot에 전달해 준다.

    def slot_fileopen(self):
        fpath = QFileDialog.getOpenFileName(self, 'Open file', './')
        self.filename.setText(fpath[0])

        self.InputToPlot(fpath[0])

 

2. numpy의 loadtxt를 이용하여 .txt 파일을 가져온다.

 

.txt 파일 양식

 

def InputToPlot(self, f_name):
	data = np.loadtxt(f_name, skiprows=1, delimiter='\t', dtype=np.float32, usecols=(1,2))

 

f_name은 파일 경로

 

skiprows는 1번째 행을 skip한다는 뜻 (0부터 시작하지 않고 1부터 시작한다고 한다.)

 

delimiter(구분자)는 \t 를 기준으로 구분한다는 뜻

 

dtype은 숫자들을 총 32bit를 이용한 float로 바꾼다는 뜻

 

usecols는 1번째 열부터 2번째 열까지만 사용한다는 뜻이다.

(위에 보여드린 .txt 파일에서는 결국 Time, Temperature만 사용하겠다는 뜻이죠!)

 

data_times = data[:, 0] #행, 열
data_temperature = data[:, 1]

 

data_times에 data[:, 0] 즉 1번째 열(Time)을 저장했다.(usecols 때문에 1열부터 시작해서 index = 0이다.)

 

data times : [8.000000e+00 5.600000e+01 1.050000e+02 ... 4.194805e+06 4.194855e+06
 4.194905e+06]
data temperature : [29.1 29.1 29.1 ... 57.  57.  57. ]

 

이렇게 ndarray 타입으로 저장된다.

 

 

 

전체 코드

def slot_fileopen(self):
    fpath = QFileDialog.getOpenFileName(self, 'Open file', './')
    self.filename.setText(fpath[0])

    self.InputToPlot(fpath[0])



def InputToPlot(self, f_name):

    data = np.loadtxt(f_name, skiprows=1, delimiter='\t', dtype=np.float32, usecols=(1,2))
    data_times = data[:, 0] #행, 열
    data_temperature = data[:, 1]
    print(f'data times : {data_times}') #milli sec
    print(f'data temperature : {data_temperature}')

    plt.plot(data_times, data_temperature)

    plt.xlabel('Time(msec)')
    plt.ylabel('Temperature(°C)')
    plt.grid(True)
    plt.show()

 

 

 

ui에서 파일을 불러오면 그래프가 나타난다.