There is an example on how to use Slider on the Matplotlib page.
In that example one can see that the update function sets newly created or changed data via the set_ydata() to the matplotlib.lines.Line2D object representing the line of the plot.
In the code here, you try to set the data to the matplotlib.axes._subplots.AxesSubplot object, which will of course not work. It should actually throw and error, 'AxesSubplot' object has no attribute 'set_ydata'.
So the correct code should plot to an axes object and save the resulting Line2D for later usage.
ax=fig.add_subplot(111)
l, = ax.plot(x,y,linewidth=2,color="red")
For completeness, here the full working code:
from __future__ import division
from matplotlib import pyplot as plt
from matplotlib.widgets import Slider
t0=0
Q0=0.001
tf=25
N0=5
Nmax=10000
dN0=Q0/(1+Q0)*(1-N0/Nmax)*N0
n=100
deltat=(tf-t0)/(n-1)
tlist=[t0]
Nlist=[N0]
Qlist=[Q0]
dNlist=[dN0]
for i in range(1,n):
Nlist.append(Nlist[i-1]+dNlist[i-1]*deltat)
Qlist.append(Qlist[i-1]+Qlist[i-1]*deltat)
dNlist.append(Qlist[i]/(1+Qlist[i])*(1-Nlist[i]/Nmax)*Nlist[i])
tlist.append(t0+i*deltat)
x=tlist
y=Nlist
fig=plt.figure()
#########
### Changes here:
ax=fig.add_subplot(111)
fig.subplots_adjust(left=0.25, bottom=0.25)
l, = ax.plot(x,y,linewidth=2,color="red")
###########
plt.xlabel("Value of t")
plt.ylabel("Value of N")
plt.title("Euler Method")
axcolor = 'lightgoldenrodyellow'
axQ0 = fig.add_axes([0.25, 0.15, 0.65, 0.03], axisbg=axcolor)
axNmax = fig.add_axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
axN0 = fig.add_axes([0.25, 0.05, 0.65, 0.03], axisbg=axcolor)
sQ0 = Slider(axQ0, 'init_Temp', 0, 0.1, valinit=Q0)
sNmax = Slider(axNmax, 'N_max', 1000, 100000, valinit=Nmax)
sN0 = Slider(axN0, "init_N",1,10,valinit=N0)
def update(val):
ini_Q = sQ0.val
ini_Nmax = sNmax.val
ini_N =sN0.val
ini_dN=ini_Q/(1+ini_Q)*(1-ini_N/ini_Nmax)*ini_N
tlist2=[t0]
Nlist2=[ini_N]
Qlist2=[ini_Q]
dNlist2=[ini_dN]
for i in range(1,n):
Nlist2.append(Nlist2[i-1]+dNlist2[i-1]*deltat)
Qlist2.append(Qlist2[i-1]+Qlist2[i-1]*deltat)
dNlist2.append(Qlist2[i]/(1+Qlist2[i])*(1-Nlist2[i]/ini_Nmax)*Nlist2[i])
tlist2.append(t0+i*deltat)
l.set_ydata(Nlist2)
fig.canvas.draw_idle()
sQ0.on_changed(update)
sNmax.on_changed(update)
sN0.on_changed(update)
plt.show()