J'ai créé un programme pour lire le fichier et afficher le graphique xy en me référant à l'exemple de programme de PySimpleGUI. Exemple de programme: PySimpleGUI-cookbook- (Recipe-Compare 2 Files), (Matplotlib Window With GUI Window)
Autres références Dessinez un graphique avec l'interface graphique PySimple Comment dessiner un graphe avec tkinter (pySimpleGUI) sans matplotlib
Win10Pro Anaconda Python3.7
Pour l'installation de PySimpleGUI, reportez-vous à l'article précédent Création d'une interface graphique de création de code QR avec PySimpleGUI.
Un programme qui télécharge un fichier CSV contenant des données x et y et vous permet de dessiner un graphique
from pathlib import Path
import matplotlib.pyplot as plt
import pandas as pd
import PySimpleGUI as sg
sg.theme('Light Blue 2')
def draw_plot(x,y):
plt.plot(x,y)
plt.show(block=False)
#block=Si vous ne spécifiez pas False, la console n'acceptera aucune entrée pendant ce temps et vous ne pourrez pas retourner au travail à moins que vous ne fermiez l'interface graphique.
def check_file(file_name):
p = Path(file_name)
print(p.suffix)
if p.suffix == '.csv':
df = pd.read_csv(p)
x = df.iloc[:,0]
y = df.iloc[:,1]
return x, y
else:
print('Wrong data file, data must be CSV')
return None, None
layout = [[sg.Text('Enter csv data')],
[sg.Text('File', size=(8, 1)),sg.Input(key='-file_name-'), sg.FileBrowse()],
[sg.Submit()],
[sg.Button('Plot'), sg.Cancel()],
[sg.Button('Popup')]]
window = sg.Window('Plot', layout)
while True:
event, values = window.read()
if event in (None, 'Cancel'):
break
elif event in 'Submit':
print('File name:{}'.format(values['-file_name-']))
x,y = check_file(values['-file_name-'])
if x[0] == None:
sg.popup('Set file is not CSV')
elif event == 'Plot':
draw_plot(x,y)
elif event == 'Popup':
sg.popup('Yes, your application is still running')
window.close()
Exécutez le programme et spécifiez le nom du fichier. Vous pouvez sélectionner un fichier en appuyant sur "Parcourir" sur le côté. Appuyez ensuite sur «Soumettre».
Appuyez ensuite sur "Tracer" pour tracer le graphique.
Cliquez ici pour que le programme crée les données CSV utilisées cette fois. C'est le même que celui créé dans Stocker divers fichiers dans HDF5.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
def base_func(x,a,b,c):
y = c + a*(x - b)**2
return y
x = np.arange(-30, 30, 1)
para = [2.0,5.0,10.0]
np.random.seed(seed=10)
y = base_func(x,para[0],para[1],para[2])+np.random.normal(0, 60, len(x))
plt.scatter(x , y)
plt.show()
#Définir les données sur csv avec dataframe
df = pd.DataFrame({'x':x,'y':y})
df.to_csv('csvdata.csv',index=False)
Après tout, c'est facile à faire!
Recommended Posts