42 votes

Comment enregistrer un tracé dans un fichier PDF sans marge importante

Si j'ai l'impression d'un complot en EPS format, le contenu du fichier EPS est entièrement occupée par l'intrigue. Mais si j'ai l'impression d'un complot dans PDF format, alors il y a de grandes marges au-dessus et au-dessous de l'intrigue dans le fichier PDF. Comment puis-je enregistrer un tracé dans un fichier PDF sans grande marge autour de l'intrigue?

Ma conjecture est que la façon de choisir automatiquement le bon "papier" de la taille d'un fichier PDF à imprimer, en fonction de la taille de la parcelle.

C'est une question que j'ai demandé à tex.stackexchange.com, où j'ai reçu des réponses, qui ont surtout essayé de résoudre le problème en dehors de MATLAB, et je ne comprends toujours pas très bien compris la seule réponse qui a essayé de résoudre de l'intérieur de MATLAB. Donc je voudrais savoir si il y a plus d'avis ici.

19voto

Ghaul Points 2871

Qu'entendez-vous par "la bonne taille"? MATLAB chiffres sont comme des graphiques vectoriels, de sorte que vous pouvez en principe choisir la taille que vous voulez sur votre parcelle.

Vous pouvez définir la taille du papier et la position de la figure avec la fonction set.

Exemple:

plot(epx(1:5));
set(gcf, 'PaperPosition', [0 0 5 5]); %Position plot at left hand corner with width 5 and height 5.
set(gcf, 'PaperSize', [5 5]); %Set the paper to have width 5 and height 5.
saveas(gcf, 'test', 'pdf') %Save figure

Enter image description here

Le code ci-dessus va supprimer la plupart des frontières, mais pas tous. C'est parce que la gauche ([0 0] dans le vecteur position) n'est pas la "vraie" gauche. Pour supprimer plusieurs des frontières, vous pouvez ajuster l' PaperPosition et PaperSize vecteurs.

Exemple:

plot(exp(1:5))
set(gcf, 'PaperPosition', [-0.5 -0.25 6 5.5]); %Position the plot further to the left and down. Extend the plot to fill entire paper.
set(gcf, 'PaperSize', [5 5]); %Keep the same paper size
saveas(gcf, 'test', 'pdf')

Enter image description here

9voto

b3. Points 5040

Axes de dimensionnement dans MATLAB peut être un peu difficile parfois. Vous avez raison de croire que l'encollage du papier des propriétés comme une partie du problème. Un autre est automatique marges MATLAB calcule. Heureusement, il existe réglable axes des propriétés qui vous permettent de contourner ces marges. Vous pouvez réinitialiser les marges pour être juste assez grand pour les étiquettes de l'axe à l'aide d'une combinaison de l' Position et TightInset propriétés qui sont expliquées ici. Essayez ceci:

>> h = figure;
>> axes;
>> set(h, 'InvertHardcopy', 'off');
>> saveas(h, 'WithMargins.pdf');

et vous obtiendrez un fichier PDF qui ressemble à ceci: MATLAB plot with auto-margins mais maintenant le faire:

>> tightInset = get(gca, 'TightInset');
>> position(1) = tightInset(1);
>> position(2) = tightInset(2);
>> position(3) = 1 - tightInset(1) - tightInset(3);
>> position(4) = 1 - tightInset(2) - tightInset(4);
>> set(gca, 'Position', position);
>> saveas(h, 'WithoutMargins.pdf');

et vous obtiendrez: MATLAB plot with auto-margins removed

9voto

Drazick Points 1059

Cela fonctionne à des fins d'affichage:

 set(gca, 'LooseInset', get(gca, 'TightInset'));
 

Devrait fonctionner pour l'impression aussi bien.

6voto

emrea Points 860

4voto

user664303 Points 760

La fonction export_fig sur l'échange de fichier MATLAB recadrera par défaut les espaces autour d'un fichier PDF / EPS de sortie lors de l'exportation d'un chiffre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X