2012-08-28 10 views
5

Wenn Sie eine einfache Figur in MATLAB erstellen und als PDF speichern, erhält die resultierende PDF-Datei eine luxuriöse Begrenzungsbox.Enge Begrenzungsbox um PDF von MATLAB Abbildung

plot(1,1,'x') 
print(gcf, '-dpdf', 'test.pdf'); 

(Aus dem Verhältnis des Ausgangs es scheint, dass sie immer auf einem setzen mich in einer Seite.)

Gibt es eine einfache Art und Weise einen dichten Begrenzungsrahmen um die PDF zu bekommen?

Antwort

3

können Sie das Begrenzungs Feld Format als

figure(1) 
hold on; 
plot(1,1,'x') 

ps = get(gcf, 'Position'); 
ratio = (ps(4)-ps(2))/(ps(3)-ps(1)) 
paperWidth = 10; 
paperHeight = paperWidth*ratio; 


set(gcf, 'paperunits', 'centimeters'); 
set(gcf, 'papersize', [paperWidth paperHeight]); 
set(gcf, 'PaperPosition', [0 0 paperWidth paperHeight]); 


print(gcf, '-dpdf', 'test2.pdf'); 

Für kleinere Grenzen folgen, können Sie die paperposition Eigenschaft einstellen, zum Beispiel

set(gcf, 'PaperPosition', [-0.5 -0.5 paperWidth+0.5 paperHeight+0.5]); 
+0

Dies ändert das Seitenverhältnis und erzeugt ein PDF, das noch eine (kleinere) hat Rand. Vielleicht gibt es eine Möglichkeit, die Abmessungen der Bounding Box auszulesen? Wie auch immer, 'PaperPosition' ist sicher interessant. –

+0

@Nico: Ich habe meine Antwort aktualisiert, um das Seitenverhältnis und kleinere Ränder zu berücksichtigen. –

1

Eine alte Frage, aber ich werde antworten, da Google dies für mich gefunden, bevor die Mathworks Hilfeseite besitzen (Leider reicht kein Ruf um einen Kommentar zu vorherigen zu schreiben). Wie dem auch sei

ratio = (ps(4)-ps(2))/(ps(3)-ps(1)) 

sollte

ratio = ps(4)/ps(3); 

als erste Werte gcf.Position sind [x, y] Lage sein, nichts auf dem Bildschirm, mit der Größe zu tun.

Auch Matlab (R) gibt eine Antwort, vor allem, wenn Sie wollen/müssen nicht Abbildung, um die Größe: https://se.mathworks.com/help/matlab/creating_plots/save-figure-with-minimal-white-space.html

fig = gcf; 
fig.PaperPositionMode = 'auto' 
fig_pos = fig.PaperPosition; 
fig.PaperSize = [fig_pos(3) fig_pos(4)];