for nnode in 3, 5, 9:
F = BasisSpline(nnode, xmin, xmax, k=1, f=f)
xnodes = F.nodes[0]
xx = np.r_[x, xnodes]
xx.sort()
demo.figure('Linear Spline with %d nodes' % nnode, '', '',
xlims, ylims, figsize=[10,5])
plt.plot(xx, f(xx), lw=3) # true function
plt.plot(xx, F(xx), 'r', lw=1) # approximation
plt.yticks(ylims, ['', ''])
xe = ['$x_{%d}$' % k for k in range(nnode)]
xe[0], xe[-1] = '$x_0=a$', '$x_{%d}=b$' % (nnode-1)
plt.xticks(xnodes, xe, fontsize=18)
for i, xi in enumerate(xnodes):
plt.vlines(xi, ylims[0], F(xi), 'gray','--')
plt.show()