[SciPy-User] scipy.interpolate.UnivariateSpline overshoot (with picture)

Pauli Virtanen pav at iki.fi
Tue Sep 11 15:27:03 EDT 2012


11.09.2012 20:49, Brad Malone kirjoitti:
> Hi, I am trying to use scipy.interpolate.UnivariateSpline to interpolate
> a region of a plot I have where there are few data points. See the
> figure of my data here: http://tinypic.com/r/dq4o3s/6
> 
> The red and blue data points are my raw data (the blue points simply
> being the subset of the red data that I want to obtain an interpolated
> curve from). I created a sublist of the blue points and then called 
> 
>        s=UnivariateSpline(newx,newy,s=1)

You can check the advice on choosing the `s` parameter in the second
answer here:

http://stackoverflow.com/questions/7906126/spline-representation-with-scipy-interpolate-poor-interpolation-for-low-amplitu

> The blue line is the spline interpolated on a grid of 1000 points
> between my initial blue raw data point and my final blue raw data point.
> As you can see, the spline works quite well, except for at the peak of
> the curve where it overshoots a tad bit. I was curious as to whether
> there was an easy fix to this (perhaps an option to UnivariateSpline
> that I am unaware of). If not, any other solutions to correct this
> overshoot?

You can use `pchip` instead of `UnivariateSpline` if you want monotonic
splines. This doesn't support smoothing, though.

-- 
Pauli Virtanen




More information about the SciPy-User mailing list