Plotting Matrix points: 2
    9 views (last 30 days)
  
       Show older comments
    
Given a matrix:
B
ans =
   30.7805   28.7527   25.7110   23.6832   19.6268   17.5949   14.5547   11.5147    8.4725    5.4313
   29.7667   27.7333   24.6923   21.6549   18.6114   15.5708   12.5285    9.4806    7.4582    4.4159
B.'
ans =
   30.7805   29.7667
   28.7527   27.7333
   25.7110   24.6923
   23.6832   21.6549
   19.6268   18.6114
   17.5949   15.5708
   14.5547   12.5285
   11.5147    9.4806
    8.4725    7.4582
    5.4313    4.4159
I am trying to plot the data as shown in this image:
I am trying to plot the 1st column as the orange points and the 2nd column as the blue points. The time between the points form a small box. The only axes I'm interested in is the X which will be composed of the overall time of the video. I am attempting to do this in a GUIDE axes. Eventually I want the user to be able to select the points and add labels.
Any advice in accomplishing this will be greatly appreciated!
0 Comments
Accepted Answer
  Paulo Silva
      
 on 20 Jul 2011
        a =[30.7805   29.7667
   28.7527   27.7333
   25.7110   24.6923
   23.6832   21.6549
   19.6268   18.6114
   17.5949   15.5708
   14.5547   12.5285
   11.5147    9.4806
    8.4725    7.4582
    5.4313    4.4159]
axis([0,max(a(:))+max(a(:))/5,0,2])
hold on
plot(a(:,1),1,'pb')
plot(a(:,2),1,'pr')
h=0.02;y=1;
arrayfun(@(n)rectangle('EdgeColor','y','Position',...
[min([a(n,1) a(n,2)]),y-h,abs(a(n,1)-a(n,2)),2*h]),1:size(a,1))
%with numbers if you want them:
arrayfun(@(n)text(min([a(n,1) a(n,2)]),y+2*h,...
num2str(size(a,1)-n+1)),1:size(a,1))
12 Comments
  Fangjun Jiang
      
      
 on 21 Jul 2011
				If you don't want the star, you just need to modify the plot() line. Help plot will show you different color, marker, and line style. Paulo uses rectangle() to draw the box. Oleg uses line() to draw the box. Mine uses the line width to fake the box. If you set the width bigger, it's pretty good. set(h,'LineWidth',8,'color','red')
More Answers (2)
  Fangjun Jiang
      
      
 on 20 Jul 2011
        B=[30.7805   28.7527   25.7110   23.6832   19.6268   17.5949   14.5547   11.5147    8.4725    5.4313
   29.7667   27.7333   24.6923   21.6549   18.6114   15.5708   12.5285    9.4806    7.4582    4.4159];
h=line(B,zeros(2,10));
hold on;
plot(B(1,:),zeros(10,1),'y*');
plot(B(2,:),zeros(10,1),'bo');
set(h,'LineWidth',2,'color','red')
4 Comments
  Fangjun Jiang
      
      
 on 20 Jul 2011
				Well, you changed the size of your B from previous one (10x2 vs. 2x10).
  B_Richardson
 on 20 Jul 2011
        3 Comments
  Fangjun Jiang
      
      
 on 20 Jul 2011
				Then, you'll probably have a button in your GUIDE GUI. In its callback function, you'll get the data B, create an axes and the use the above code to create the figure.
See Also
Categories
				Find more on Annotations in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



