[PYTHON] Zeigen Sie das Diagramm an, während Sie die Parameter mit PySimpleGUI + Matplotlib ändern

Einführung

Wenn Sie ein Diagramm aus einer Funktion zeichnen, möchten Sie möglicherweise sehen, wie das Diagramm aussieht, während Sie die Parameter ändern. Beispielsweise kann der Vergleich zwischen der analytischen Lösung und der numerischen Lösung der Ballkoordinaten, wenn der Ball im folgenden Dokument vertikal geworfen wird, beim Ändern der Parameter bestätigt werden.

Mit Python erlernte numerische Berechnungsmethode für die Fluiddynamik

Hier wird der Graph bei v0 = 10, 30, 100 gezeichnet.

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

GUI-Anzeige

Zeitbreite: Δt, Anfangsgeschwindigkeit: v0, Anfangshöhe: h0, Schwerkraftbeschleunigung: g kann mit dem Schieberegler geändert werden. Nachdem Sie die Variable mit dem Schieberegler geändert haben, zeichnen Sie das Diagramm mit der Schaltfläche Senden und löschen Sie das Diagramm mit der Schaltfläche Löschen.

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))

Grafik anzeigen

Zeigen Sie das Diagramm mit matplotlib an. Drehen Sie die Hauptschleife, nachdem Sie den Diagrammbereich mit plt.figure und fig.add_subplot () erstellt haben. Ich überwache GUI-Ereignisse und wenn ich die Senden-Taste drücke, lese ich den Wert vom Schieberegler und zeige das Diagramm an. Bei Verwendung von plt.pause () wird außerdem ein aktualisierbares Diagramm angezeigt.


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

    #Beenden, wenn die Schaltfläche Beenden gedrückt wird oder wenn die Schaltfläche zum Schließen des Fensters gedrückt wird
    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 =Wechseln Sie zu Darstellung bis 0
        while h >= 0:
            ln = plt.scatter(t, h, marker='o', c='black')
            h += (-g * t + v0) * dt
            t += dt

        #Darstellung des Graphen
        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

Zeigen Sie das Diagramm an, während Sie die Parameter mit PySimpleGUI + Matplotlib ändern
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Zeigen Sie Markierungen über dem Rand mit matplotlib an
Erhöhen Sie die Schriftgröße des Diagramms mit matplotlib
Die Basis der Graphentheorie mit Matplotlib-Animation
Banddiagramm mit Matplotlib
So schalten Sie die Skalenwertanzeige aus, während Sie das Raster mit matplotlib verlassen
Setzen Sie Scipy + Matplotlib in Ubuntu auf Vagrant und zeigen Sie die Grafik mit X11 Forwarding an
Diagrammzeichnungsmethode mit matplotlib
Zeichnen Sie Excel-Daten mit matplotlib (2)
Echtzeit-Diagrammanzeige von matplotlib
[Python] Lesen Sie die CSV-Datei und zeigen Sie die Abbildung mit matplotlib an
Wie man zeichnet, indem man die Farbe des Diagramms kontinuierlich mit matplotlib ändert und einfach viele Legenden anordnet
Inferenz- und Ergebnisanzeige mit Tensorflow + matplotlib
Zeichnen Sie mit matplotlib ein loses Diagramm
Passen Sie den Abstand zwischen den Figuren mit Matplotlib an
Richten Sie die Größe der Farbleiste an der Matplotlib aus
[PyQt] Mehrachsendiagramme mit QtChart anzeigen
Bildanzeige mit dem eingebauten ISIGHT
Zeigen Sie Python 3 im Browser mit MAMP an
Zeigen Sie das xy-Diagramm von Matplotlib mit PySimpleGUI an.
Japanisches Diagramm mit VS Code + matplotlib anzeigen
Stellen Sie die Farbe der xticklabels individuell mit matplotlib ein
Zeichnen Sie Dreiecksfunktionen mit Numpy und Matplotlib
Richten Sie die Farbleiste mit matplotlib an der Figur aus
[Jupyter Notebook Memo] Kanji mit Matplotlib anzeigen
Erstellen Sie ein Diagramm mit Rändern, die mit matplotlib entfernt wurden
Wenn Sie mit der Maus über Matplotlib fahren, wird das entsprechende Bild angezeigt.
Installieren Sie matplotlib und zeigen Sie das Diagramm in Jupyter Notebook an
Zeichnen Sie eine flache Oberfläche mit einem Matplotlib-3D-Diagramm
[Python] Grenzachse des 3D-Graphen mit Matplotlib
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
Zeichentipps mit matplotlib auf der Serverseite
Ich möchte mehrere Bilder mit matplotlib anzeigen.
So zeigen Sie Bilder kontinuierlich mit matplotlib Memo an
Grafikzeichnung mit Jupyter (Ipython-Notizbuch) + Matplotlib + Vagabund
Richten Sie die Matplotlib-Diagrammfarben an ähnlichen Farben aus (Farbkarte).
Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib
matplotlib: Ersetzen Sie die Achse selbst durch eine andere.
Zeigen Sie das Bild nach der Datenerweiterung mit Pytorch an
[Siehe nicht 04.02.17] Zeigen Sie den Temperatursensor in Echtzeit in einem Diagramm mit Himbeer-Pi 3 an