MATLAB Answers

# Two curves in one plot with wrong scaling

1 view (last 30 days)
Mepe on 23 Feb 2020
Commented: darova on 25 Feb 2020
I want to show the measurement results of two measurements with a fitting curve in a plot. Now I want both values to start at x-value 1 and end at 13. I tried to do this with xticks and xticklabels, which has worked wonderfully so far. By adding the spline (from the curvefitting toolbox) I can no longer do it with the second value (y2).
Does anyone have an idea where the failure lies?
Here is the sample code:
y1= [ 1 2 3 4 5 6 7 8 9 10 11 12 13]
y2= [ 10 20 30 40 50 60 70 80 90 100 110 120 130]
ft = fittype( 'smoothingspline' );
opts = fitoptions( 'Method', 'SmoothingSpline' );
f = figure(1);
set(f, 'Units', 'normalized', 'Position', [0.1, 0.1, 0.7, 0.7]);
opts.SmoothingParam = 1;
[xData, yData] = prepareCurveData( [], y1 )
[fitresult, gof] = fit( xData, yData, ft, opts );
plot(fitresult,'b')
hold on
[xData, yData] = prepareCurveData( [], y2 )
[fitresult, gof] = fit( xData, yData, ft, opts );
plot(fitresult,'r')
grid on
legend('y1','y2')
xticks([0 1 2 3 4 5 6 7 8 9 10 11 12 13 14])
xticklabels({'',1,2,3,4,5,6,7,8,9,10,11,12,13,0})
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Accepted Answer

darova on 23 Feb 2020
Use function that fit() returns
[fitresult, gof] = fit( xData, yData, ft, opts );
% plot(fitresult,'r')
plot(xData,fitresult(xData),'r')
##### 5 CommentsShowHide 4 older comments
darova on 25 Feb 2020
What about manual spline?
[fitresult, gof] = fit( xData, yData, ft, opts );
% plot(fitresult,'r')
x1 = linspace(xData(1),xData(end),100);
y1 = spline(xData,fitresult(xData),x1);
plot(xData,fitresult(xData),'.r')
hold on
plot(x1,y1,'b')
hold off

Sign in to comment.

### More Answers (1)

Mepe on 25 Feb 2020
I generated a spline code using the curve fitting toolbox:
ft = fittype( 'smoothingspline' );
opts = fitoptions( 'Method', 'SmoothingSpline' );
opts.SmoothingParam = 1;
[xData, yData] = prepareCurveData( [], y1 )
[fitresult, gof] = fit( xData, yData, ft, opts );
plot(fitresult,'b')
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!