Définition de la taille de la figure du graphique

91

Tout ce que je veux faire est de rendre la largeur plus grande et la hauteur plus petite. Je fais juste des tracés raster mais cette question s'applique à n'importe quel MATLAB figure. Je peux le redimensionner manuellement en utilisant la figure directement lors de sa création, mais je veux que le programme le recrache dans la bonne taille pour commencer.

ale
la source

Réponses:

81

Les propriétés qui peuvent être définies pour a figuresont référencées ici .

Vous pouvez alors utiliser:

figure_number = 1;
x      = 0;   % Screen position
y      = 0;   % Screen position
width  = 600; % Width of figure
height = 400; % Height of figure (by default in pixels)

figure(figure_number, 'Position', [x y width height]);
Marcus Frödin
la source
12
Et comment pouvez-vous enregistrer la figure avec les mêmes dimensions définies par set? As saveas(gcf, file, 'png')utilise à la place les dimensions par défaut.
István Zachar
@ IstvánZachar voir stackoverflow.com/questions/3600945/…
Emil Lundberg
64

Écrivez-le en une seule ligne :

figure('position', [0, 0, 200, 500])  % create new figure with specified size  

entrez la description de l'image ici

zinjaai
la source
31
 figure (1)
 hFig = figure(1);
 set(gcf,'PaperPositionMode','auto')
 set(hFig, 'Position', [0 0 xwidth ywidth])
 plot(x,y)
 print -depsc2 correlation.eps;       % for saving in eps, look up options for saving as png or other formats you may need

Cela enregistre la figure dans les dimensions spécifiées

user1934314
la source
8
+1 pour le 'PaperPositionMode' il faut que vous vouliez 'imprimer' (exporter) la figure.
Ali le
1

J'ai réussi à obtenir un bon résultat avec la séquence suivante (exécutez Matlab deux fois au début):

h = gcf; % Current figure handle
set(h,'Resize','off');
set(h,'PaperPositionMode','manual');
set(h,'PaperPosition',[0 0 9 6]);
set(h,'PaperUnits','centimeters');
set(h,'PaperSize',[9 6]); % IEEE columnwidth = 9cm
set(h,'Position',[0 0 9 6]);
% xpos, ypos must be set
txlabel = text(xpos,ypos,'$$[\mathrm{min}]$$','Interpreter','latex','FontSize',9);

% Dump colored encapsulated PostScript
print('-depsc2','-loose', 'signals');
Thomas
la source
0

Une approche différente.
Lors de l' figure()appel, spécifiez les propriétés ou modifiez les propriétés de la poignée de la figure aprèsh = figure() .

Cela crée une figure plein écran basée sur des unités normalisées.
figure('units','normalized','outerposition',[0 0 1 1])

La unitspropriété peut être ajustée en pouces, centimètres, pixels, etc.

Consultez la figure documentation .

SecretAgentMan
la source