Есть четыре случайные точки. Если их рисовать функцией plot то получается ломаная линия. Универсальный сплайн некорректно работает.
Код:
from scipy.interpolate import UnivariateSpline
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(llcrnrlon=0,llcrnrlat=-80,urcrnrlon=360,urcrnrlat=80,projection='mill', lon_0=50)
m.drawcoastlines()
m.drawparallels(np.arange(-90.,91.,30.), labels=[False,True,True,False])
m.drawmeridians(np.arange(-360, 361, 60), labels=[True,False,False,True])
lats = np.array([60, 40, 50, 60])
lons = np.array([60, 90, 70, 60])
x, y = m(lons, lats)
m.plot(x, y, 'D-', markersize=2, linewidth=0, color='r', markerfacecolor='b')
s = UnivariateSpline(x, y)
newx = np.linspace(x.min(),x.max(),300)
newy = s(newx)
m.plot(newx, newy, 'D-', markersize=0, linewidth=1, color='r', markerfacecolor='b')
plt.show()
x:[ 6671692.45708087 10007538.68562131 7783641.19992768
6671692.45708087]
y: [ 19299144.15184047 16372993.24035927 17749739.88073428
19299144.15184047]
newx: [ 6671692.45708087 7042342.03802981 7412991.61897875
7783641.19992768 8154290.78087662 8524940.36182556 8895589.9427745
9266239.52372343 9636889.10467237 10007538.68562131]
newy: [ nan nan nan nan nan nan nan nan nan nan]