Plotting Matrix points: 2
4 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Paulo Silva
2011 年 7 月 20 日
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 件のコメント
Fangjun Jiang
2011 年 7 月 21 日
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')
その他の回答 (2 件)
Fangjun Jiang
2011 年 7 月 20 日
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 件のコメント
Fangjun Jiang
2011 年 7 月 20 日
Well, you changed the size of your B from previous one (10x2 vs. 2x10).
B_Richardson
2011 年 7 月 20 日
3 件のコメント
Fangjun Jiang
2011 年 7 月 20 日
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.
参考
カテゴリ
Help Center および File Exchange で Annotations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!