MATLAB Answers

How do I connect points in a scatter plot with a line?

조회 수: 3,125(최근 30일)
Matt
Matt 15 Jul 2014
Hi
I plot a scatter for multiple points and i want to connect them using line. Below is my code. The plot i get is only scatter, I cant connect them through a line. Any help appreciated!
x=[1,2,3,4,5,6,7,8,9];
y=[1,2,3,4,5,6,7,8,9];
hold all
for i=1:8
scatter(x(i),y(i),'X')
line(x(i),y(i))
end
Thanks
Matt

  댓글 수: 0

로그인 to comment.

채택된 답변

Ben11
Ben11 15 Jul 2014
편집: MathWorks Support Team 27 Nov 2018
If you want to plot both markers and a line, you can use the plot function and specify a line style that includes marker symbols and a line style, such as '-x'. For example, this code plots a line with crosses at the data points.
plot(x,y,'-x')
If you are trying to plot only the first eight points, then use this code instead:
plot(x(1:8),y(1:8),'-x')
If you are plotting from a cell array, then use this code instead:
plot(cell2mat(x(1:8)),cell2mat(y(1:8)),'-x')

  댓글 수: 2

Matt
Matt 15 Jul 2014
Thanks! It works :)
Ben11
Ben11 15 Jul 2014
Great! You can accept John's answer as I kind of use his to answer your question. Glad it helped!

로그인 to comment.

추가 답변(2개)

Brian B
Brian B 15 Jul 2014
편집: Brian B 15 Jul 2014
Don't use a for loop:
x=[1,2,3,4,5,6,7,8,9];
y=[1,2,3,4,5,6,7,8,9];
hold on
scatter(x,y,'X')
line(x,y)
or just
plot(x,y,'-o')

  댓글 수: 1

John D'Errico
John D'Errico 15 Jul 2014
Both of you have missed that for some reason, he wants to plot the first 8 elements.

로그인 to comment.


John D'Errico
John D'Errico 15 Jul 2014
You asked this question before! In fact, you asked exactly that question, but for some reason nobody managed to give a good answer.
plot(x(1:8),y(1:8),'b-x')
There is NO need for a loop. The above single line will plot x marks at each point, and connect them with a line, all in blue.
If you prefer to plot the line in blue, and the x marks in red, this will do it:
plot(x(1:8),y(1:8),'b-',x(1:8),y(1:8),'rx')

  댓글 수: 3

Matt
Matt 15 Jul 2014
Thank you John! For ur undersnatding!
I try to ask my question here with simple way. The actual problem I have here is a bit complex. I am ploting data from Cell. That means:-
hold all
for i=1:8
scatter(x{1,i},y{1,i},'X')
line(x{1,i},y{1,i})
end
I try like this according to your previous answer!
plot(x{1,(1:8)},y{1,(1:8)},'X')
But it says me "Too many input arguments" I have spend too much time on this. I cant get the trick!!
H ZETT M
H ZETT M 18 Jan 2017
Hey, this question is pretty old,but I want to know something similar. I got scattered points on a 2D surface and I want just to connect those points that are close to each other. Basically I want to say something like "connect the points that are in a range of 10m to each other" Any ideas how to do this ?
John D'Errico
John D'Errico 18 Jan 2017
@ZETT: This is a TOTALLY different question. Ask it as a question. A separate and new question.

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by