1. 程式人生 > >Matlab圖形視窗大小的控制,plot視窗大小,figure大小,axis設定,實用

Matlab圖形視窗大小的控制,plot視窗大小,figure大小,axis設定,實用

Matlab中儲存影象時,圖形視窗大小的控制zz

首先要了解的是Matlab是面向物件的。最高等級的物件是screen,它定義了figure可以用的最大szie。
screen下面是figure。figue就是你畫圖的時候跳出來的那個新的對話視窗。如果figure變化,screen是不會跟著變化的。但screen變化的話,figure就要跟著變化了。
 

figure下面是axes。axes是那個窗口裡面你要畫的東西。axes的大小和位置取決於figure,如果你放大縮小figure的大小的話,裡面的圖線也會跟著變化的。

set(gca,'position',[])

因此,set (gca,'position',[0.1,0.1,0.9,0.9] );的作用是:

設定座標軸距離畫板(圖形視窗figure)邊距。

[0.1,0.1,0.9,0.9]分別為axes在figure中的左邊界,下邊界,寬度,高度,最小為0,最大為1(左邊界,下邊界為0,上邊界,右邊界為1)

見下面的例子:

-----------------------------------------------------------------------------

figure

 set (gca,'position',[0.1,0.1,0.9,0.9] );

 x=1:0.1:10; 
y=sin(x);
plot(x,y)

-----------------------------------------------------------------------------

set(gcf,'position',[])

一般matlab繪出來圖的框架(圖形視窗)大都是正方形或者近似正方形的矩形,能不能畫一些扁的矩形呢?

使用圖形的position屬性可以做到。

如set(gcf,'unit','normalized','position',[0.2,0.2,0.64,0.32]);的意思是:

對gcf的position進行設定。使其在螢幕上的顯示位置是以(0.2,0.2)為原點,長0.64,寬0.32。同gca一樣,仍然是左邊界,下邊界為0,

上邊界,右邊界為1。

另外,gcf的position也可以不是normalized的。如下面的例子:

-----------------------------------------------------------------------------

x=-2*pi:0.1:2*9i;y=sin(x);figure;set(gcf,'Position',[500,500,500,500], 'color','w') %大小設定plot(x,y,'k-')%節點位移圖形輸出xlim([min(s(:,2)) max(s(:,2))])grid on

-----------------------------------------------------------------------------

其中,

[500,500,500,500]的意思為:原點的位置x,原點的位置y,寬,高,其座標為points(詳見下面),

現在問題還存在:

如果僅設定position的話,列印的時候還是正方形。可以用下面的方法解決:

通常預設情況下,print命令輸出影象為 8*5inches,無視螢幕顯示尺寸
通過命令列修改的話有三步

1 設定paperposition為manual
set(gcf,'PaperPositionMode', 'manual')
[ auto | {manual} ]

2 設定paperunit   
set(gcf,'PaperUnits','inches')
[ {inches} | centimeters | normalized | points ]

3 設定paperposition
set(gcf,'PaperPosition',[left,bottom,width,height])

例如
set(gcf, 'PaperPositionMode', 'manual');
set(gcf, 'PaperUnits', 'points');
set(gcf, 'PaperPosition', [0 0 640 480]);

還有一個相關命令是papersize
paperposition是placement,代表影象在paper(感覺就是螢幕screen的意思?)中的所處位置。left和bottom計算好,就可以使影象在paper中居中
papersize是紙張大小;position要比size小的

PaperPosition
    four-elementrect vector
    Location onprinted page. A rectangle that determines the location of thefigure on the printed page. Specify this rectangle with a vector ofthe form
    rect = [left, bottom, width, height]
    where leftspecifies the distance from the left side of the paper to the leftside of the rectangle and bottom specifies the distance from thebottom of the page to the bottom of the rectangle. Together thesedistances define the lower-left corner of the rectangle. width andheight define the dimensions of the rectangle. The PaperUnitsproperty specifies the units used to define this rectangle.


要使影象比例輸出與螢幕顯示的一致,可以使用如下命令
螢幕顯示影象尺寸可以plot時用 set(gcf,'position',[left bottom width height])調整,或者print之前拖動視窗手動調整

This example exports a figure at screen size to a 24-bit TIFF file,myfigure.tif.

% set(gcf,'position',[80 100 800 600])  %如果手動拖放,則不需要這一行命令
set(gcf, 'PaperPositionMode','auto')   % Use screen size
print -dtiff myfigure

用matlab畫了一張圖,投稿時要縮小,縮小後字型就會過小或者發虛。我摸索出比較好的方法是如下的程式碼:%%%%%%%%%%%%%%%%%%%%%%plotyour figure before%%%%%%%%%%%%%%%%%%%%%% figure resize
set(gcf,'Position',[100 100 260 220]);
set(gca,'Position',[.13 .17 .80 .74]);
figure_FontSize=8;
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
set(findobj('FontSize',10),'FontSize',figure_FontSize);
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);%%%%%%%%%%%%%%%%%%%%%%%%%%%%解釋:set(gcf,'Position',[100100 260 220]);
這句是設定繪圖的大小,不需要到word裡再調整大小。我給的引數,圖的大小是7cmset(gca,'Position',[.13 .17.80 .74]);
這句是設定xy軸在圖片中佔的比例,可能需要自己微調。figure_FontSize=8;
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
set(findobj('FontSize',10),'FontSize',figure_FontSize);這4句是將字型大小改為8號字,在小圖裡很清晰set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

這句是將線寬改為2