import numpy as np from scipy.interpolate import interp1d import matplotlib.pyplot as plt data1 = np.loadtxt('inp_test_sp.txt', usecols=(0,1)) f = interp1d(data1[:,0], data1[:,1], kind='cubic') xmin=-10.0 xmax=10.0 dx=0.1 ndx=int((xmax-xmin)/dx)+1 xnew = np.linspace(xmin,xmax,ndx) for i in range(0,ndx): print(xnew[i],f(xnew[i])) plt.plot(data1[:,0],data1[:,1],'ro',label='Observed') plt.plot(xnew,f(xnew),'b-',label='cubic') plt.legend() plt.xlabel('$x$') plt.ylabel('$y$ (python)') plt.show()