How to plot best fit line?

3,065 views (last 30 days)
fzhmktr
fzhmktr on 15 Jan 2018
Commented: Miles on 11 Nov 2023
I have 1700 plot of data in graph. How do I plot the line of best fit? I stored the x and y data in table and the plot them. From the graph, I can see that the graph plotting is upwards. I have read other answers for this kind of question but still confused. Please help. Thank you.
x = score;
y = MOS;
scatter(x,y)
xlabel('score')
ylabel('MOS')

Accepted Answer

Image Analyst
Image Analyst on 15 Jan 2018
Edited: Image Analyst on 10 Feb 2021
Use polyfit() and polyval():
% Get coefficients of a line fit through the data.
coefficients = polyfit(x, y, 1);
% Create a new x axis with exactly 1000 points (or whatever you want).
xFit = linspace(min(x), max(x), 1000);
% Get the estimated yFit value for each of those 1000 new x locations.
yFit = polyval(coefficients , xFit);
% Plot everything.
plot(x, y, 'b.', 'MarkerSize', 15); % Plot training data.
hold on; % Set hold on so the next plot does not blow away the one we just drew.
plot(xFit, yFit, 'r-', 'LineWidth', 2); % Plot fitted line.
grid on;
See attached for a full demo.
  3 Comments
Sahil Bharti
Sahil Bharti on 22 Jul 2021
Thanks. it was usefull to me as well
Miles
Miles on 11 Nov 2023
Thank you!

Sign in to comment.

More Answers (3)

Jos (10584)
Jos (10584) on 15 Jan 2018
if it is just for plotting, the command lsline would do.
x = 1:10 ; y = 2* x + 3 ;
plot(x, y, 'bo') ;
lsline
  1 Comment
optoengineer2
optoengineer2 on 9 Feb 2021
lsline works only with "Statistics and Machine Learning Toolbox"

Sign in to comment.


Veer Gatha
Veer Gatha on 18 May 2021
x = {1;3;5;7;8};
y = {1;4;6;8;0};
scatter(x,y)
xlabel('score')
ylabel('MOS')

Ravisha Gunawardhana
Ravisha Gunawardhana on 12 Oct 2022
This command doesn't work, You have to put square brackets for the graph to be plotted otherwise an error occurs.
  1 Comment
Image Analyst
Image Analyst on 12 Oct 2022
@Ravisha Gunawardhana What command? There is lots of code and commands shown above. Who are you replying to? Are you commenting on someone's answer, or answering the original poster, @fzhmktr?
Where do you say someone needs square brackets? If the original poster is right that x and y are table variables then I think he'll have to use a dot to get the particular column he wants to plot since scatter() can't take a table variable as an input.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!