2017-03-16 4 views
0

Ich speichere eine Matlab Figur als PNG. Ich mag die Druckgröße fest an die Bildschirmgröße einzustellen, so dass ich verwendet:Matlab Figur als PNG

set(gca(),'LooseInset',get(gca(),'TightInset')); %set print size tight to the screen size 

aber mein Bild ist nicht fest an die Bildschirmgröße gespeichert wird, noch in der Mitte des Bildschirms ...

hier ist mein Code mit allem, was ich schon versucht:

function []=FilledCircle1(x0,y0,Radius,N,col1) 

if(N<=1) 
    error('N must be greater than 1'); 
end 

hold on 
axis equal 
% axis off 
hold on 

t=(0:N)*2*pi/N; %t=-pi:0.01:pi 
x=Radius*cos(t)+x0; 
y=Radius*sin(t)+y0; 


c1=fill(x,y,col1); 

set (c1, 'edgecolor','k') 

set(gcf,'PaperUnits','inches','PaperSize',[0.8666,0.8666],'PaperPosition',[0 0 0.8666 0.8666])%setting size (130/150, 130/150, 150pixels per inch being the default size of img), paper position is imporrtant as otherwise i will have extra border 

% % set(gcf,'Position', [0 0 4.4466 3.5733], 'units','inches') 
% % iptsetpref('ImshowBorder','tight'); 

set(gca(),'LooseInset',get(gca(),'TightInset')); %set print size tight to the screen size 

% set(gcf, 'Position', get(0,'screensize')); 

set(gcf,'color','none'); %set backgroound color to transparent 
fig = gcf; 
fig.InvertHardcopy = 'off'; %saves the fig with the set background color 

ich meine png-Datei möchte wie folgt aussehen:

enter image description here

es jedoch wie folgt aussehen:

enter image description here

Kann mir jemand helfen zu verstehen, was mache ich falsch? Vielen Dank!

+0

Es ist überhaupt nicht klar, wie sich das erste Bild auf das zweite bezieht. Ungeachtet dessen gelten die Einfügungen für die * Achsen *, nicht das, was darin eingezeichnet ist. Wenn das geplottete Objekt zentriert und gezoomt werden soll, müssen die Achsengrenzwerte vor dem Speichern geändert werden. – excaza

+0

Das erste Bild zeigt nur, dass der gefüllte Kreis, den ich geplottet habe, zentriert sein soll und den gesamten Bildschirm füllen soll. @excaza – Mraquel

Antwort

3

Das Problem liegt daran, dass die Beschriftungen der X- und Y-Ticks das Diagramm verschieben.

enter image description here

Anstatt mit TightInset Messing, würde ich setze nur die Position Eigenschaft der axes das Innere der Achsen zu dauern, bis das gesamte Bild

hfig = figure(); 
hax = axes(); 

t = (0:N)*2*pi/N; %t=-pi:0.01:pi 
x = Radius*cos(t)+x0; 
y = Radius*sin(t)+y0; 

c1 = fill(x,y,col1); 

set(c1, 'edgecolor','k') 

set(hfig, 'PaperUnits', 'inches', ... 
      'PaperSize', [0.8666,0.8666], ... 
      'PaperPosition', [0 0 0.8666 0.8666], ... 
      'InvertHardCopy', 'off') 

axis(hax, 'equal') 
axis(hax, 'off') 

set(hax, 'Position', [0 0 1 1]); 
set(hfig, 'Color', 'none'); 

print(hfig, '-dpng', 'output.png') 

enter image description here

Sie up sollte auch die Verwendung von export_fig in Betracht ziehen, da es die auf dem Bildschirm angezeigten Grafiken getreuer reproduziert.

+0

export_fig gespeichert meine geistige Gesundheit mehrere Male, ich rate auch stark seine Verwendung. – UJIN

+0

Danke @Suever! – Mraquel

Verwandte Themen