728x90
반응형
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import tkinter as tk
root = tk.Tk() #Tk 객체 생성. 기본 윈도우 객체
root.geometry('500x500')
root.title('')
root.resizable(True, True)
data_x = []
data_y = []
def data(): # 파일 읽어 데이터 가져오기
f = open('data06.txt','r') # 파일 열기
lines = f.readlines()
x = []
y = []
for Li in lines: # 라인 읽기
tmp = Li.split('|') # 한 라인 데이터를 '|'로 분리
x.append(tmp[1].strip()) # x에 데이터 추가
y.append(tmp[2].strip()) # y에 데이터 추가
f.close() # 파일 닫기
global data_x # 전역 변수
global data_y
x = list(map(float, x)) # 문자열을 float 타입으로 변환
y = list(map(float, y))
data_x = x # 전역변수에 x 대입
data_y = y
def draw(): # plot 그리기 함수
if data_x: # 데이터가 있으면
fig.add_subplot(1,1,1).plot(data_x, data_y) # plot 그리기
canvas.draw() #
fig = Figure(figsize=(5, 4.5)) #그리프 그릴 창 생성
plt.rcParams['axes.unicode_minus'] = False # - 표시
canvas = FigureCanvasTkAgg(fig, master=root) # canvas 추가
canvas.get_tk_widget().grid(row=0, column=0, columnspan=2)
btn1 = tk.Button(root, text="첫번쨰 파일", width=10, command=data) # 버튼 추가
btn1.grid(row=2, column=0)
btn3 = tk.Button(root, text="draw", width=10, command=draw)
btn3.grid(row=2, column=1)
root.mainloop()
2개의 파일 사용하고, chart 2개 그리기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import tkinter as tk
root = tk.Tk() #Tk 객체 생성. 기본 윈도우 객체
root.geometry('500x500')
root.title('')
root.resizable(True, True)
data_x = [[],[]]
data_y = [[],[]]
def data(f_idx): # 파일 읽어 데이터 가져오기
if f_idx == 1:
f_name = 'data06.txt'
elif f_idx == 2:
f_name = 'data07.txt'
f = open(f_name,'r') # 파일 열기
lines = f.readlines()
x = []
y = []
for Li in lines: # 라인 읽기
tmp = Li.split('|') # 한 라인 데이터를 '|'로 분리
x.append(tmp[1].strip()) # x에 데이터 추가
y.append(tmp[2].strip()) # y에 데이터 추가
f.close() # 파일 닫기
global data_x # 전역 변수
global data_y
x = list(map(float, x)) # 문자열을 float 타입으로 변환
y = list(map(float, y))
if f_idx == 1:
data_x[0] = x # 전역변수에 x 대입
data_y[0] = y
elif f_idx == 2:
data_x[1] = x # 전역변수에 x 대입
data_y[1] = y
def draw(): # plot 그리기 함수
if data_x[0]: # 데이터가 있으면
fig.add_subplot(1,1,1).plot(data_x[0], data_y[0]) # plot 그리기
if data_x[1]:
fig.add_subplot(2,1,1).plot(data_x[0], data_y[0]) # plot 그리기
fig.add_subplot(2,1,2).plot(data_x[1], data_y[1]) # plot 그리기
canvas.draw() #
fig = Figure(figsize=(5, 4.5)) #그리프 그릴 창 생성
plt.rcParams['axes.unicode_minus'] = False # - 표시
canvas = FigureCanvasTkAgg(fig, master=root) # canvas 추가
canvas.get_tk_widget().grid(row=0, column=0, columnspan=3)
btn1 = tk.Button(root, text="첫번쨰 파일", width=10, command=lambda: data(1)) # 버튼 추가
btn1.grid(row=2, column=0)
btn2 = tk.Button(root, text="두번쨰 파일", width=10, command=lambda: data(2)) # 버튼 추가
btn2.grid(row=2, column=1)
btn3 = tk.Button(root, text="draw", width=10, command=draw)
btn3.grid(row=2, column=2)
root.mainloop()
728x90
반응형
'프로그램' 카테고리의 다른 글
| [파이썬] 문제 : 주사위 3번 던져서 합을 구하는데 1 이면 다음번 수는 합하지 않고 6이면 다음번 수는 2배로 합 구하기 (0) | 2023.05.09 |
|---|---|
| [파이썬] 문제 : 주사위 3개를 던졌을 때 주사위 2개의 합이 7이 되는 경우 출력 (0) | 2023.05.09 |
| [파이썬] 문제 : 숙박시설 csv 파일 읽어 bar chart그리기 (0) | 2023.05.06 |
| [파이썬] 터틀(turtle)에서 주사위 정육면체 코드에서 그룹화해서 이동 및 각도 변경해서 그리기 (0) | 2023.05.06 |
| [파이썬] 문제 : tkinter 가위,바위,보 게임 (1) | 2023.05.06 |


댓글