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

Pauli Virtanen pav@iki...
Tue Sep 11 14:27:03 CDT 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:


> 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