datos de ajuste con numpy

Permítanme comenzar diciendo que lo que recibo puede no ser lo que espero y quizás pueda ayudarme aquí. Tengo los siguientes datos:

>>> x
array([ 3.08,  3.1 ,  3.12,  3.14,  3.16,  3.18,  3.2 ,  3.22,  3.24,
    3.26,  3.28,  3.3 ,  3.32,  3.34,  3.36,  3.38,  3.4 ,  3.42,
    3.44,  3.46,  3.48,  3.5 ,  3.52,  3.54,  3.56,  3.58,  3.6 ,
    3.62,  3.64,  3.66,  3.68])

>>> y
array([ 0.000857,  0.001182,  0.001619,  0.002113,  0.002702,  0.003351,
    0.004062,  0.004754,  0.00546 ,  0.006183,  0.006816,  0.007362,
    0.007844,  0.008207,  0.008474,  0.008541,  0.008539,  0.008445,
    0.008251,  0.007974,  0.007608,  0.007193,  0.006752,  0.006269,
    0.005799,  0.005302,  0.004822,  0.004339,  0.00391 ,  0.003481,
    0.003095])

Ahora, quiero ajustar estos datos con, digamos, un polinomio de 4 grados. Así que hago:

>>> coefs = np.polynomial.polynomial.polyfit(x, y, 4)
>>> ffit = np.poly1d(coefs)

Ahora creo una nueva cuadrícula para los valores de x para evaluar la función de ajusteffit:

>>> x_new = np.linspace(x[0], x[-1], num=len(x)*10)

Cuando hago todo el trazado (conjunto de datos y curva de ajuste) con el comando:

>>> fig1 = plt.figure()                                                                                           
>>> ax1 = fig1.add_subplot(111)                                                                                   
>>> ax1.scatter(x, y, facecolors='None')                                                                     
>>> ax1.plot(x_new, ffit(x_new))                                                                     
>>> plt.show()

Me sale lo siguiente:

fitting_data.png

Lo que espero es que la función de ajuste se ajuste correctamente (al menos cerca del valor máximo de los datos). ¿Qué estoy haciendo mal?

Gracias por adelantado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta