1

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.

1 Answer 1

1

Just set per parameter to 0 in scipy.interpolate.splprep:

tck, u = splprep(coords.T, u=None, s=0.0, per=0) 

enter image description here

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.