#python #csv #matplotlib #pysimplegui
Вопрос:
Я должен построить график с помощью matplotlib, прочитав CSV-файл из pandas. Кроме того, мне нужно ввести путь к файлу вне кода python вместо ввода внутри pd.read_csv('file path)
. Поэтому, чтобы это произошло, мне нужно создать графический интерфейс, используя модуль PySimpleGUI. Но я застрял в середине того, чтобы не вводить имя файла в программу. Полный код приведен ниже:
import PySimpleGUI as sg
sg.theme("DarkTeal2")
layout = [[sg.T("")], [sg.Text("Choose a file: "), sg.Input(), sg.FileBrowse(key="-IN-")],[sg.Button("Submit")]]
###Building Window
window = sg.Window('My File Browser', layout, size=(600,150))
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event=="Exit":
break
elif event == "Submit":
print(values["-IN-"])
Это код для диалогового окна
Код для моего построения выглядит следующим образом :
import pandas as pd
from matplotlib import pyplot as plt
#Reading the CSV file
ds = pd.read_csv(r"filename.csv")
#Input of required value of time
start_row = int(input('Please enter starting time(in ms): '))
end_row =int(input('Please enter ending time(in ms): '))
if start_row>end_row or start_row==end_row :
print("Please Enter the end time greater than the start time!")
else:
#Plotting of the graph
print(plt.plot(ds.iloc[start_row:(end_row 1)]))
plt.xlabel('Milliseconds')
plt.ylabel('TCMD')
plt.grid()
plt.savefig(r"path") #To save the plot as a jpeg file
plt.show()
ds.describe()
#Detailed insights on the data
print(ds.iloc[start_row:(end_row 1)].describe())
Пожалуйста, помогите мне с решением.
Комментарии:
1.
[sg.Text("Choose a file: "), sg.Input(key="-IN-"), sg.FileBrowse()],
, получитеfilename = values['-IN-']
после нажатия кнопкиSubmit
, после закрытия окна, затемds = pd.read_csv(filename)
.2. Я уже пробовал это, но есть ошибка, показывающая, что значения не определены
3. Что за полное сообщение об ошибке ?
4. Ошибка имени: имя «значения» не определено
5. Может быть, код не такой, как вы опубликовали ?
Ответ №1:
Пример кода для получения имени файла, или вы можете позвонить filename = sg.popup_get_file("Choose a file: ", file_types=(("ALL CSV Files", "*.csv"), ("ALL Files", "*.*"), ))
напрямую.
import PySimpleGUI as sg
sg.theme("DarkTeal2")
layout = [
[sg.T("")],
[sg.Text("Choose a file: "),
sg.Input(key="-IN-"),
sg.FileBrowse(file_types=(("ALL CSV Files", "*.csv"), ("ALL Files", "*.*"), ))],
[sg.Button("Submit")],
]
window = sg.Window('My File Browser', layout, size=(600,150))
filename = ""
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, "Exit"):
break
elif event == "Submit":
filename = values['-IN-']
break
window.close()
print(filename)