How to set the Attribute possition in a annotation of type rectangle
Afficher commentaires plus anciens
I made a figure, in that I generated a grid of size say N=5 M=8, and I want to highlight the region between (5,2:end-1) in other color. What I did was make the grid in matlab and then generate the M-file for the case rows=N=5 columns=M=8, then in that figure I insert a rectangle with other color in the area I want to highlig and generate the M-file of the rectangle to obtain its position, and add it at the end of the grid code . Now what I want to do is generalize the code for any value of M or N, so for any value of N, M of the grid the region between (N,2:end-1)is highlated in other color. I could generalize the code of the grid by replacing 5 by N and 8 by M. but I am having problems with the position of the rectangle which are the last two lines of the code. I can not figure out how to set the vertical position of the retangle in terms of the size of the grid (N,M) here some code:
function CreateFigureGrid(N,M)
%CREATEFIGURE
% Auto-generated by MATLAB on 19-Nov-2010 16:49:38
% Create figure
%figure1 = figure('PaperSize',[20.98 29.68]);
figure1 = figure();
% Create axes
axes1 = axes('Parent',figure1,'YTick',0:N,'YGrid','on',...
'XTick',0:M,...
'XGrid','on',...
'XTickLabel',[],...
'YTickLabel',[],...
'Position',[0.1368 0.1153 0.775 0.815],...
'PlotBoxAspectRatio',[M N 1],...
'GridLineStyle','-',...
'DataAspectRatio',[1 1 1]);
% Uncomment the following line to preserve the X-limits of the axes
xlim(axes1,[0 M]);
% Uncomment the following line to preserve the Y-limits of the axes
ylim(axes1,[0 N]);
box(axes1,'on');
hold on
text(0.4,0.5,'S','FontName','Courier New');
text(M-.6,.5,'G');
annotation(figure1,'rectangle','FaceColor',[0.8471 0.1608 0],...
'Position',[.1368+.775/M 0.2024 (.775/M)*(M-2) 0.127]);
% Here are some other examples on how the position change with
%other values of N and M
%[0.2351 0.2024 0.5774 0.127] M=8 N=5
% [0.2143 0.2659 0.619 0.1032] M=10 N=5
% [0.1771 0.3948 0.6949 0.05159] M=20 N=5
.1368 is the x-value of the low-left corner of the axis .775 is the width of the box, I try to do the same with the y-values but itdoes not work, I am missing somenthing maybe the aspect ratio is involved in any way but I could not figure it out I will appreciate any help
Réponse acceptée
Plus de réponses (1)
Maider Marin
le 17 Mai 2011
Catégories
En savoir plus sur Labels and Annotations dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!