Home > Net >  Curve fitting using python
Curve fitting using python

Time:09-21

I am trying to fit a curve for a set of points using numpy and scipy libraries but am getting a closed curve as shown below.
Could anyone let me know how to fit a curve without closing curve?

The code I followed is:

import numpy as np
from scipy.interpolate import splprep, splev
import matplotlib.pyplot as plt

coords = np.array([(3,8),(3,9),(4,10),(5,11),(6,11), (7,13), (9,13),(10,14),(11,14),(12,14),(14,16),(16,17),(17,18),(18,18),(19,18), (20,19),
        (21,19),(22,20),(23,20),(24,21),(26,21),(27,21),(28,21),(30,21),(32,20),(33,20),(32,17),(33,16),(33,15),(34,12), (34,10),(33,10),
         (33,9),(33,8),(33,6),(34,6),(34,5)])

tck, u = splprep(coords.T, u=None, s=0.0, per=1) 
u_new = np.linspace(u.min(), u.max(), 1000)
x_new, y_new = splev(u_new, tck, der=0)

plt.plot(coords[:,1], coords[:,0], 'ro')
plt.plot(y_new, x_new, 'b--')
plt.show()

Output:

enter image description here

I need output without joining the 1st and last point.

Thank you.

CodePudding user response:

Just set per parameter to 0 in enter image description here

  • Related