Slider/Schieberegler für Variablen erstellen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
pagrf
User
Beiträge: 1
Registriert: Samstag 27. Juni 2020, 10:03

Samstag 27. Juni 2020, 10:23

Hallo liebe Python-Community,

erst einmal muss ich wohl sagen, dass ich noch ein ziemlicher Python-Anfänger bin. Trotzdem habe ich es geschafft ein kleines Programm zu programmieren, welches dazu dient den Verlauf von Infektionskrankheiten zu berechnen. Nun habe ich jedoch ein Problem, welches sich auch nach ewiger Recherche nicht beheben lässt...
Ich würde gerne die Variablen a, b und c (vgl. Code) in einen Slider/Schieberegler überführen, welchen man dann im Programm anpassen kann und sich dann auch die Kurven ändern.

Wäre das irgendwie möglich? Wenn ja würde ich mich sehr über jegliche Hilfestellungen freuen!

Liebe Grüße
Paul :)

Code: Alles auswählen

import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt

# Größe der Bevölkerung
N=83020000
# Zu Beginn (t=0) Infizierte
Inf=50
#Anfangsbedingungen festlegen:
S0=1-(Inf/N) #Die Bevölkerung wird normiert, d.h. 1=100%
I0=(Inf/N)
R0=0
D0=0
#Modell definieren
#Model
# -----------------------------------------------------
def SIRD(conc, t):
    S=conc[0]
    I=conc[1]
    _=conc[2]
    _=conc[3]
    #Variablen für das System
    a=0.8 #Infizierungsrate
    b=0.4 #Rate der Genesung
    c=0.01 #Sterberate
    #SIRD-System
    dS = - a * S * I
    dI = a * S * I - b * I -c*I
    dR = b*I 
    dD = c*I
    return(dS, dI, dR, dD)
conc0=[S0,I0,R0,D0]
dt=(1/7)
#Zeit in Wochen, Tage eingeben da dt=1/7
t=np.arange(600)*dt
r=integrate.odeint (SIRD, conc0,t)
fig = plt.figure(figsize=(12,4))
plt.plot(t,r[:,0],'b', linewidth =2, label='Gesund, infizierbar')
plt.plot(t,r[:,1],'r', linewidth =2, label='Infiziert')
plt.plot(t,r[:,2],'y', linewidth =2, label='Geheilt, Immun')
plt.plot(t,r[:,3],'g', linewidth =2, label='Verstorben')
plt.xlabel('Wochen')
#Skalierung der y-Achse
plt.ylim(0,1)
#Skalierung der x-Achse
plt.xlim(5,30)
plt.ylabel('Bevölkerungsanteil')
plt.legend()
plt.grid(True)
plt.savefig('XY_time.png', dpi=500)
plt.show()

tonikae
User
Beiträge: 11
Registriert: Sonntag 23. Februar 2020, 10:27

Montag 29. Juni 2020, 16:10

Aktive Steuerelement in Plotfenstern sind Widgets.
Ein Demo für Slider-/Radiobuttons/ und Buttons findest du hier.

https://matplotlib.org/3.1.1/gallery/wi ... _demo.html

Als Python-Code oder Jupyter-Notebook
Antworten