Interaktive Darstellung mit Matplotlib
Es braucht nicht unbedingt Plotly und schon gar nicht Dash für eine interaktive Darstellung mit Python. Matplotlib selber bietet schon Controls wie Buttons und Sliders an.
Was man damit anfangen kann zeigt das folgende GIF:
Die Slider bestimmen die Parameter des Polynoms und bei jeder Aenderung wird das Diagramm neu gezeichnet.
Das Script
import matplotlib.pyplot as plt from matplotlib.widgets import Slider def polynom( x, coefficients ): result = 0 factor = 1 for c in reversed(coefficients): result += c * factor factor *= x return result fig,ax = plt.subplots() plt.subplots_adjust( bottom=0.4 ) plt.title("ax³ + bx² + cx + d") plt.grid( alpha=0.5 ) ax.spines['right'].set_visible( False ) ax.spines['top'].set_visible( False ) ax.set_xlim( -10.2, 10.2 ) ax.set_ylim( -100, 100 ) axsld = plt.axes( [0.1,0.10,0.7,0.03]) axslc = plt.axes( [0.1,0.15,0.7,0.03]) axslb = plt.axes( [0.1,0.20,0.7,0.03]) axsla = plt.axes( [0.1,0.25,0.7,0.03]) sla = Slider( axsla, "a", -0.1, 0.1, 0 ) slb = Slider( axslb, "b", -1, 1, 0 ) slc = Slider( axslc, "c", -10, 10, 10 ) sld = Slider( axsld, "d", -50, 50, 0 ) coeff = [0,0,10,0] x = [n/10 for n in range(-100,100,1)] y = [polynom(px,coeff) for px in x] line, = ax.plot( x, y ) def update( event ): coeff[0] = sla.val coeff[1] = slb.val coeff[2] = slc.val coeff[3] = sld.val line.set_ydata( [polynom(px,coeff) for px in x] ) fig.canvas.draw_idle() sla.on_changed( update ) slb.on_changed( update ) slc.on_changed( update ) sld.on_changed( update ) plt.show()
Ungewöhnlich ist vor allem wie die Flächen für die Slider definiert werden (axsld ... axsla). Die Slider selbst und der Eventhandler sind sehr ähnlich wie bei anderen Frameworks.