2012-08-28 13 views
5

Podczas tworzenia prostej figury w MATLAB i zapisywania jej jako PDF, wynikowy plik PDF będzie miał luksusowe ramkę ograniczającą.Ciasna ramka wokół pliku PDF z MATLAB rysunek

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

(ze stosunku wyjściem wydaje się, że zawsze umieścić w na zasadzie stronie.)

Czy istnieje prosty sposób, aby uzyskać szczelne obwiedni wokół PDF?

Odpowiedz

3

można sformatować obwiednię następująco

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'); 

dla mniejszych granic, można ustawić właściwość paperposition, np

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

ten modyfikuje proporcje i tworzy plik PDF, który nadal ma (mniejszy) granica. Może istnieje sposób na odczytanie wymiarów obwiedni? W każdym razie, "PaperPosition" z pewnością jest interesujące. –

+0

@Nazwa: zaktualizowałem swoją odpowiedź pod kątem współczynnika proporcji i mniejszych ramek. –

1

Stare pytanie, ale ja odpowiem od google znaleźć to dla mnie przed Mathworks właścicielem stronę pomocy (przepraszam nie wystarczy reputacja aby umieścić komentarz poprzedni). mimo

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

należy

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

jako pierwsze wartości gcf.Position: [x, y], miejsce na ekranie, nie ma nic wspólnego z wielkością.

także Matlab (R) daje odpowiedź, zwłaszcza jeśli nie chcesz/potrzeba zmiany ciała: 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)];