How to get the size or position of the plot box within a figure window?
    27 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    paul harder
      
 le 6 Mar 2014
  
    
    
    
    
    Commenté : Gert Kruger
      
 le 7 Nov 2018
            After much effort, I am still struggling to find the command to get the size or position of the plot box (i.e. the white box) within a figure window. What I really need is the aspect ratio of this white box, but a size or position command would get me there. I've tried variations of 'Position', 'PlotBoxAspectRatio', 'pbaspect',and 'DataAspectRatio' without luck.
For example, if I run the following command,
plot(1:100,1:100,'linewidth',5)
I want to know about the physical size/shape of the white box ONLY, not the grey box:

.
Thanks!
Paul
1 commentaire
  Mr M.
      
 le 3 Juil 2018
				and how to get the size of the grey area? Because as far as I know, figure size consist the whole are with title bar also. But I need only the grey 'drawable' area.
Réponse acceptée
  Dishant Arora
      
 le 6 Mar 2014
        
      Modifié(e) : Dishant Arora
      
 le 6 Mar 2014
  
      h =figure;
axesHandles = findall(h,'type','axes');
get(axesHandles,'position')
4 commentaires
  Eric
 le 12 Avr 2017
				Hi Paul,
I'm raising this thread from the grave to ask a question about your algorithm for determining the width and height.
PlotBoxWidth=(axesPosition(3)-axesPosition(1))*windowPosition(3);
PlotBoxHeight=(axesPosition(4)-axesPosition(2))*windowPosition(4);
Shouldn't these instead be:
PlotBoxWidth=axesPosition(3)*windowPosition(3);
PlotBoxHeight=axesPosition(4)*windowPosition(4);
For axesPosition in default normalized units and windowPosition in default pixel units, using your code with a square axis doesn't give an aspect ratio of 1, whereas the two lines I gave does.
I am wondering if there is a situation where your code is actually what is needed and my code is wrong. I can imagine that if axesPosition was not in normalized units, one would have to do something differently.
Plus de réponses (1)
  Hieu Nguyen
 le 9 Fév 2018
        You can use the subplot function:
pos = [0.3 0.6 0.2 0.4]; % [left bottom width height]
subplot('Position',pos);
Then, you can plot the figure that you need:
plot(1:100,1:100,'linewidth',5)
1 commentaire
Voir également
Catégories
				En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Help Center et File Exchange
			
	Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





