2016-03-30 17 views
0

Während der Beantwortung dieser question und Fragen, unabhängig von der Frage, mit dem Erstellen von Figuren mit wirklich hoher Höhe habe ich festgestellt, dass Zahlen abgeschnitten werden. Wenn 'units' Eigenschaften der Kinder der Figur auf 'normalized' festgelegt ist, wird das entsprechende Kind eher geschrumpft als abgeschnitten.Limit der Abbildung Dimensionen

Die Frage ist, warum ist die Höhe der Figur begrenzt und welche (Eigenschaft) Regeln, die begrenzen. Es sieht aus wie ich bin limitted Höhe Abbildung von 9,94" (Dell Latitude E5500, Win7 enterpise, 32-bit, Matlab 2011b, Auflösung 1400x900 px)

bearbeiten

Ich habe versucht, dieses:

>> set(gcf,'position',[10 10 600 600]),get(gcf,'position') 

ans = 

10.0000 10.0000 28.3333 9.8750 

>> set(gcf,'position',[0 0 600 600]),get(gcf,'position') 

ans = 

0  0 600 600 

Das durch export_fig erhaltene Bild ist in beiden Fällen 28,35" x 9,88" , gemessen in Adobe Acrobat 9 Pro.

+0

Dies verwendet 'export_fig' oder' print'? – Suever

Antwort

2

ich nehme es mit mit dem Maximalanzeigegröße von Matlab erkannt zu tun hat und das pi xel Dichte Ihres Systems.

Auf meinem Matlab R2013a, Windows 7, mit einem Bildschirm 1900x1200, kann ich eine größere Zahl als man bekommt, aber es wird immer noch abgeschnitten:

%% // MATLAB R2013A - Windows 7, 1900x1200pixels 
set(gcf,'units','inches','position',[1 -5 6 15]) 
get(gcf,'position') 
get(gcf,'OuterPosition') 

kehrt:

ans = 
      1.00   -5.00   6.00   11.81 
ans = 
      0.92   -5.08   6.17   12.71 

Meine maximale vertikale Figurgröße wurde bei 11.81 Zoll geschnitten. Nun, das ist das Innere einer Matlab-Figur. Die tatsächliche Größe einschließlich Titelleiste und Rahmen wird durch die Eigenschaft OuterPosition angegeben.

Nun betrachten:

>> get(0,'ScreenSize') 
ans = 
      1.00   1.00  1920.00  1200.00 
>> get(0,'ScreenPixelsPerInch') 
ans = 
     96.00 

Wenn wir das tun 1200pixel/96ppi = 12,5. Mit dieser Bildschirmdichte kann Matlab nur 12,5 Zoll Grafik anzeigen. Dies wird auch offensichtlich Modus, wenn Sie das Gerät auf ‚Pixel‘ eingestellt:

set(gcf,'units','inches','position',[1 -5 6 15]) 
set(gcf,'units','Pixels') 
get(gcf,'position') 
get(gcf,'OuterPosition') 
ans = 
     97.00  -479.00  576.00  1134.00 
ans = 
     89.00  -487.00  592.00  1220.00 

Die Figur wurde genau 1220pixels abgeschnitten (die Zoll-Einheit ist nur eine Umwandlung, Matlab Basiseinheit in Pixeln arbeitet). Ich vermute, dass die zusätzlichen 20 Pixel eine zusätzliche Erlaubnis für die Titelleiste sind.

Jetzt mit Ihren Zahlen, ich habe nicht die outerposition Ihrer Figur, aber sogar die innere Position der Figur entspricht etwa Ihrer Bildschirmgröße (900px * 96ppi = 9.375 Zoll). Versuchen Sie, die Einheiten zurück zu Pixels zu zwingen, erhalten Sie die OuterPosition der Figur und ich wäre nicht überrascht, wenn Sie 920pixels bekommen.


Nun scheint es nur über die für ältere Versionen von Matlab müssen sich Sorgen zu machen. Auf der gleiche Maschine (Win 7, 1900x1200px), mit Matlab R2015b, nicht mehr automatischen Beschneiden:

%% // MATLAB R2015B - Windows 7, 1900x1200pixels 
set(gcf,'units','inches','position',[1 -5 6 15]) 
get(gcf,'position') 
get(gcf,'OuterPosition') 
ans = 
      1.00   -5.00   6.00   15.00 
ans = 
      0.92   -5.08   6.17   15.40 
set(gcf,'units','Pixels') 
get(gcf,'position') 
get(gcf,'OuterPosition') 
ans = 
     97.00  -479.00  576.00  1440.00 
ans = 
     89.00  -487.00  592.00  1478.00 

Der neue Grafik-Engine von Matlab scheint diese Beschränkung aufgehoben zu haben, ist meine Figur jetzt größer, dass meine Bildschirmgröße (ob Sie Pixel oder Zoll betrachten).

+0

Danke für die perfekte Antwort. Ich nehme an, es gibt die gleiche Idee, die Breite von Figuren zu beschneiden. – Crowley