GUI를 사용하여 시퀀스 데이터의 차트를 작성했습니다.

컨디션
Python version:3.9.7
OS: windows 10.0
Anaconda:conda 4.11.0
※PySimpleGUI、dataframe_이미지가 conda의 라이브러리에 표준 입력이 없기 때문에 추가되었습니다.
이루고 싶고 하고 싶은 일
·GUI를 통해 합계할 csv 파일을 선택합니다.
・ 통합 로그 폴더를 만들고 새로 만든 데이터를 저장합니다.저장된 폴더를 엽니다.
• 3개의 차트를 동일한 시간 순서로 취합합니다.
• describe(count,mean,std,min,25%,50%,75%,max) 데이터 테이블을 제작한다.
・def를 사용해 보세요.
· GUI에서 만든 파일을 출력합니다.
과제.
・matplotlib을 사용하여 양식을 만듭니다.나는 데이터 프레임에서 간단하게 만들 수 있을 거라고 생각했지만 잘 모르겠다.
데이터 프레임을 만들고 csv 파일을 만들기로 했습니다.
추기이미지로 제작되었습니다.
code
type_1.1.py
import PySimpleGUI as sg
import pandas as pd
import matplotlib.pyplot as plt
import ntpath
import os
import subprocess
import dataframe_image as dfi
# User Function
import gui_operation

# Get csv data from GUI
file_path = gui_operation.read_csv_file()

if file_path != "NULL": # run only selecting csv file,

    # Variable setting 
    file_name = ntpath.basename(file_path)
    axis_name = ['pressure','temperature','humidity']
    axis_len = len(axis_name) # axis_name couont.

    #絶対ディレクトリでファイル指定する。
    df = pd.read_csv(file_path)

    #保存先のディレクトリ作成
    os.makedirs('log', exist_ok=True)

    #group化し、describeの取得。
    grouped = df.groupby('date')

    for i in range (axis_len):
        df_sescribe = grouped.describe()[axis_name[i]]
        df_sescribe.insert(0, 'item',axis_name[i])

        if  i == 0 :
            df_append = df_sescribe
        else:
            df_append = df_append.append(df_sescribe, ignore_index=True)

    df_append.to_csv( "./log/" + file_name[4:8] + "_output_pd.csv", encoding="shift_jis")
    dfi.export(df_append, "./log/" + file_name[4:8] + "dataframe.png")

    # フォルダを開く
    cwd = os.getcwd() #現在のディレクトリ情報を取得
    subprocess.Popen(["explorer",  cwd + "\log" ], shell=True) #file open

    # pandas のdate time編集
    df['daytime'] = pd.to_datetime( file_name[0:4] + '/' + df['date'] + ' ' + df['time'])

    # set up figure size
    fig = plt.figure(figsize=(8,6))

    # X軸の値取得 - 共通部分
    x1 = pd.to_datetime(df['daytime'])

    for i in range (axis_len):
        ax = fig.add_subplot(3,1,i+1)

        if   i == 0 :                         # 最初
            ax.set_title(file_name[4:8] + ' vs pressure,temperature,humidity')      # グラフ タイトル

        if i == (axis_len - 1):
            ax.set_xlabel("time")              # x 軸 ラベル         
        else:
            ax.axes.xaxis.set_ticklabels([])   #ラベル/テキストを非表示にする

        y1 =pd.Series(df[axis_name[i]],    dtype='float')
        ax.plot(x1, y1)                          # 値のplot

        ax.set_ylabel(axis_name[i])             # y 軸 ラベル
        ax.grid(True)                          # grid 表示 ON
        ax.legend([axis_name[i]])              # 凡例 を 表示

    plt.xticks(rotation=45)                    # 軸のローテーション
    plt.rcParams['figure.subplot.bottom'] = 0.25 #下端の調整

    plt.show()

    #画像の表示
    fig.savefig("./log/" + file_name[4:8] +"_img.png")

    sg.theme('SystemDefault')
    layout = [
      [sg.Image('./log/' + file_name[4:8] +'_img.png'),sg.Image("./log/" + file_name[4:8] + "dataframe.png")]
    ]
    window = sg.Window('画像', layout=layout)

    # イベントループ
    while True:
        event, values = window.read()
        if event == sg.WIN_CLOSED:
            break
    window.close()


def를 다른 파일로 정의하고 싶어서 선택한 부분은gui입니다operation.py로 기술했습니다.
파일을 선택하지 않은 상태에서 이벤트 작업 후 Inputext에 있는 텍스트를 입력하십시오. 그렇지 않으면 아무것도 들어오지 않습니다.
이벤트 작업 후 조건 지점에서 csv 파일을 선택한 Submit을 제외하고 NULL 출력으로 데이터 처리를 하지 않습니다.
gui_operation.py

import PySimpleGUI as sg

def read_csv_file():

    # GUI color select
    sg.change_look_and_feel('Light Blue 2')

    layout = [[sg.Text('Data'),
               sg.InputText(' file path',key='-file-'),
               sg.FilesBrowse('Read file', target='-file-', file_types=(('csv file', '.csv'),))],
              [sg.Submit(), sg.Cancel()]
    ]

    # Make a window
    window = sg.Window('Charting', layout)#window title

    # Event operation
    while True:
        event, values = window.read() # Event read 
        if event in 'Submit': 
            Get_file = values['-file-'] # Get file path
            if  Get_file == ' file path':
                Get_file = 'NULL'
            break
        else:
            Get_file = 'NULL' # Get file path
            break
    window.close()
    return Get_file


사용한 입력 파일의 추가 방법을 이해했기 때문에 여기에 두지 않았다.
방법을 알았으면 내가 다시 보충할게.

좋은 웹페이지 즐겨찾기