[PYTHON] Afficher le graphique lors de la modification des paramètres avec PySimpleGUI + Matplotlib

introduction

Lorsque vous dessinez un graphique à partir d'une fonction, vous souhaiterez peut-être voir à quoi ressemble le graphique en modifiant les paramètres. A titre d'exemple, la comparaison entre la solution analytique et la solution numérique des coordonnées de la balle lorsque la balle est lancée verticalement dans le document suivant peut être confirmée en modifiant les paramètres.

Méthode de calcul numérique de la dynamique des fluides apprise avec Python

Ici, le graphique à v0 = 10, 30, 100 est dessiné.

スクリーンショット 2020-10-26 112924.jpg

Affichage GUI

Largeur de temps: Δt, vitesse initiale: v0, hauteur initiale: h0, accélération de gravité: g peut être modifiée avec le curseur. Après avoir changé la variable avec le curseur, dessinez le graphique avec le bouton Soumettre et supprimez le graphique avec le bouton Effacer.

import numpy as np
from matplotlib import pyplot as plt
import PySimpleGUI as sg

layout = [
    [
        sg.Text(
            'delta t',
            size=(13, 1)
        ),
        sg.Slider(
            (0.01, 1),
            0.1,
            0.01,
            orientation='h',
            size=(15, 15),
            key='-DELTA T-',
            enable_events=True
        )

    ],
    [
        sg.Text(
            'v0',
            size=(13, 1)
        ),
        sg.Slider(
            (0.01, 100),
            10,
            0.1,
            orientation='h',
            size=(15, 15),
            key='-V0-',
            enable_events=True
        )
    ],
    [
        sg.Text(
            'h0',
            size=(13, 1)
        ),
        sg.Slider(
            (0, 100),
            0,
            1,
            orientation='h',
            size=(15, 15),
            key='-H0-',
            enable_events=True
        )
    ],
    [
        sg.Text(
            'gravity',
            size=(13, 1)
        ),
        sg.Slider(
            (0.1, 100),
            9.8,
            0.1,
            orientation='h',
            size=(15, 15),
            key='-G-',
            enable_events=True
        )
    ],
    [
        sg.Button(
            'Submit',
            size=(10, 1)
        ),
        sg.Button(
            'Clear',
            size=(10, 1)
        )
    ]
]

window = sg.Window('Trajectory of ball', layout, location=(0, 0))

Afficher le graphique

Affichez le graphique avec matplotlib. Après avoir créé la zone graphique avec plt.figure et fig.add_subplot (), tournez la boucle principale. Je surveille les événements de l'interface graphique et lorsque j'appuie sur le bouton d'envoi, je lis la valeur du curseur et j'affiche le graphique. De plus, en utilisant plt.pause (), un graphique modifiable est affiché.


fig = plt.figure(figsize=(7, 7), dpi=100)
ax = fig.add_subplot(111)

while True:
    event, values = window.read(timeout=0)
    if event == "__TIMEOUT__":
        continue

    #Quitter lorsque le bouton Quitter est enfoncé ou lorsque le bouton de fermeture de fenêtre est enfoncé
    elif event in ('Exit', sg.WIN_CLOSED, None):
        break

    elif event == 'Submit':
        dt = values['-DELTA T-']
        v0 = values['-V0-']
        g = values['-G-']
        h0 = values['-H0-']

        t1 = ((v0 ** 2 + 2 * g * h0) ** 0.5 + v0) / g

        t = np.linspace(0, t1, 100)
        h = -0.5 * g * t ** 2 + v0 * t + h0
        la, = plt.plot(t, h, color='blue')

        # ##########################################################

        t = 0
        h = h0

        # h =Passer à la représentation jusqu'à 0
        while h >= 0:
            ln = plt.scatter(t, h, marker='o', c='black')
            h += (-g * t + v0) * dt
            t += dt

        #Représentation du graphique
        ax.set_xlabel('Time')
        ax.set_ylabel('Height')
        ax.grid(color='black', linestyle='dashed', linewidth=0.5)
        ax.legend(handles=[la, ln], labels=['Analytical', 'Numerical'])
        plt.pause(0.1)
        # ##########################################################

    elif event == 'Clear':
        plt.clf()
        ax = fig.add_subplot(111)
        plt.pause(0.1)


Recommended Posts

Afficher le graphique lors de la modification des paramètres avec PySimpleGUI + Matplotlib
[Python] Définissez la plage du graphique avec matplotlib
Afficher les marqueurs au-dessus de la bordure avec matplotlib
Augmentez la taille de la police du graphique avec matplotlib
La base de la théorie des graphes avec l'animation matplotlib
Graphique de bande avec matplotlib
Comment désactiver l'affichage de la valeur d'échelle en quittant la grille avec matplotlib
Mettez Scipy + Matplotlib dans Ubuntu sur Vagrant et affichez le graphique avec X11 Forwarding
Méthode de dessin graphique avec matplotlib
Graphique des données Excel avec matplotlib (2)
Affichage graphique en temps réel par matplotlib
[Python] Lisez le fichier csv et affichez la figure avec matplotlib
Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib
Affichage des inférences et des résultats avec Tensorflow + matplotlib
Dessinez un graphique lâche avec matplotlib
Ajustez l'espacement entre les chiffres avec Matplotlib
Alignez la taille de la barre de couleurs avec matplotlib
[PyQt] Afficher des graphiques multi-axes avec QtChart
Affichage de l'image prise avec l'ISIGHT intégré
Afficher Python 3 dans le navigateur avec MAMP
Afficher le graphe xy de Matplotlib avec PySimpleGUI.
Afficher le graphique japonais avec VS Code + matplotlib
Définissez la couleur des xticklabels individuellement avec matplotlib
Graphiques de fonctions triangulaires avec numpy et matplotlib
Alignez la barre de couleurs sur la figure avec matplotlib
[Mémo Jupyter Notebook] Afficher les kanji avec matplotlib
Créer un graphique avec des bordures supprimées avec matplotlib
Lorsque vous passez la souris sur Matplotlib, l'image correspondante s'affiche.
Installer matplotlib et afficher le graphique dans Jupyter Notebook
Dessinez une surface plane avec un graphique 3D matplotlib
[Python] axe limite du graphe 3D avec Matplotlib
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
Conseils de dessin avec matplotlib côté serveur
Je souhaite afficher plusieurs images avec matplotlib.
Comment afficher des images en continu avec matplotlib Memo
Dessin graphique avec jupyter (notebook ipython) + matplotlib + vagrant
Aligner les couleurs du graphique Matplotlib avec des couleurs similaires (carte des couleurs)
Visualisez le comportement de l'algorithme de tri avec matplotlib
matplotlib: remplacez l'axe lui-même par un autre.
Afficher l'image après l'augmentation des données avec Pytorch
[Ne pas se référer au 04.02.17] Afficher le capteur de température dans un graphique en temps réel avec rasberry pi 3