MATLAB 圖片線寬字號設定
%plot your figure before
%%%%%%%%%%%%%%%%%%%%%
set(gcf,'Units','centimeters','Position',[12 12 7 5]);%設定圖片大小為7cm×5cm %get hanlde to current axis返回當前圖形的當前座標軸的控制代碼, %(the first element is the relative distance of the axes to the left edge of the figure,... %the second the vertical distance from the bottom, and then the width and height; set(gca,'Position',[.18 .18 .75 .70]);%設定xy軸在圖片中佔的比例 set(get(gca,'XLabel'),'FontSize',8);%圖上文字為8 point或小5號 set(get(gca,'YLabel'),'FontSize',8); set(get(gca,'TITLE'),'FontSize',8); set(gca,'fontsize',8);%設定座標軸字型大小 set(gca,'linewidth',0.5); %座標線粗0.5磅 set(gca,'box','off');%Controls the box around the plotting area set(get(gca,'Children'),'linewidth',1.5);%設定圖中線寬1.5磅
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
下邊附上其他引數的設定方法,其實就是利用函式控制代碼來對圖形進行操作。有興趣的自己研究研究:
Here are some tips on making "better" figures with Matlab for theses, papers/abstracts, and reports. Basically, you need to change/disable some of Matlab's default settings to get the print you want. Figures and axes/subplots are defined in Matlab by a set of "handles" that, for example, define the size of a figure or the position of an axes system within a figure. To understand how this work you must know that Matlab is written object oriented. The way I understand is that there is a hierachie in the different objects. For example, your screen has the highest priority as it defines the maximum size a (usable) figure can have. The next lower member is the figure. If you change a figure size, the screen won't be affected, but if you could shrink the screen size, the figure size would be changed as well. Next comes the axes system(s) in the figure. The size and position of the axes system depends on the figure. For example, if you shrink the size of the figure, the size of your plot will change accordingly. On the other hand, if you change the size of a subplot/axes, the figure will not change. The object oriented guys call this parents (higher ranking in the hierachy) and children thing. In Germany, we have the saying that trying is more worth and studying or practise makes the master. Therefore, I recommend that you play with these options to see how they change the appearence of your figure plot, ...
I'll start first with a list ofparameters that you can use to modify a matlab plot and then go intomore details later. Start with the following commands to create a lineplot: figure h=plot(randn(100,1)); Then type one after the other: get(gcf) get(gca) get(h) What you will see in the command window is a list of handles thatallows you modify you plots. A list of the most important (aka the onesI am using the most frequently) is this one here:
Figures color: Allows you to change the color of the figure (the area around the axes system). You can do it by the following command: set(gcf,'color',[0 0 0.3]); This will create a dark blue color. Colors in Matlab are handled as red-green-blue tribles where each valuevaries between 0 and 1. For example, red is [1 0 0], green [0 1 0],yellow [1 1 0], white [1 1 1], and black [0 0 0]. Grays are [x x x]with 0 < x < 1. This setting makes only sense if you also set the parameter Inverthardcopy off. In this case, Matlab will not change the figure color to white when you print the figure or save it to a graphics format: set(gcf,'inverthardcopy','off'); PaperPositionMode Per default, Matlab resizes a figure when printing or saving it to agraphics file. To disable this resizing, set the PaperPositionMode toauto (default is manual): set(gcf,'paperpositionmode','auto'); The function cfigure does it automatically. After setting thisparameter and printing the figure it should have the same size andaspect ratio as it appears on the screen. Position Allows you to define the size of a figure. See below for more details. Axes box Controls the box around the plotting area. To have a line all around the plotting area, use set(gca,'box','on'); color Defines the color of the plotting area (the axes are controlled separately): set(gca,'color',[1 1 1]*0.9); sets the color to a light gray. xcolor, ycolor, zcolor Use these parameters to change the color of the axes and the associated ticklabels: set(gca,'color',[1 1 1]*0.8,'xcolor','r','ycolor','b'); (this color choice is only to illustrate the potential but not a recommendation for a serious presentation) Fontsize Controls the fontsize of the axes tick labels (NOT the xlabel, ylabel, and title). set(gca,'fontsize',18); Fontweight Change the fontstyle to bold or back to normal: set(gca,'fontweight','bold'); set(gca,'fontweight','normal'); Again, the axes labels are not affected. Layer Some pseudo color plots like imagesc or pcolor cover the ticks of theaxes (and gridlines, if applicaple). To bring them up again, use set(gca,'layer','top'); Linewidth To increase the width of an axes or grid line: set(gca,'linewidth',3); Note: the width of a plot line will not change position To place a the plotting area within the figure. See below ... xdir, ydir, zdir Can be reverse or normal: set(gca,'ydir','reverse'); xscale,yscale Can be lin (linear) or log (logarithmic) set(gca,'xscale','log') xaxislocation Can be top or bottom. In certain seismic plots it looks good to havethe xaxis at the top and the vertical (y-) axis increasing downwards: set(gca,'xaxislocation','top','ydir','reverse') yaxislocation Can be left or right. Plot Color To change the color of the line. Default is blue, so if yoiu want to change that after plotting do the following: set(h,'color',[0.2 0.9 0.314]); Linestyle To modify the line style. Possible options are ':' dotted, '-' solid, '--' dashed, '-.' dash-dotted set(h,'linestyle',':'); Linewidth To increase the linewidth: set(h,'linewidth',10) Marker To change/add a marker to the plotted data, for example set(h,'marker','o') to add a circle at every data point. Markersize You can increase the size of the marker by set(h,'markersize',8) Markeredgecolor The color of the marker can be different: set(h,'markeredgecolor','w'), and separately you can set the markerfacecolor such that set(h,'marker','d','markeredgecolor','r','markerfacecolor','g'); Of course you can combine the settings into a single command: set(gca,'xaxislocation','top','ydir',' reverse','inverthardcopy','off') set(h,'linewidth',5,'marker','v','mark erfacecolor','k','markeredgecolor','r'). In case of the plotting command, you can also include these settings in the plot instructions: plot(xdata,ydata,'-og','linewidth',3,' markerfacecolor','r','markeredgecolor','y') For xlabel, ylabel and title it is actually easier to set the layout when making the labels, for example
xlabel('text','fontsize',14,... 'fontweight','bold',... 'color','m')
Or you can get a list of options by first creating the xlabel, and then
get(get(gca,'xlabel'))
Then setting parameters (e.g., fontsize) goes like that
set(get(gca,'xlabel'),'fontsize',10)
On the position options
Position and size of figures and axes systems are handled object oriented in Matlab. That basically means that the size of a figure window is defined in relative terms of the size of the next higher order member in the hierachy, which is the screen size. Similarly, the size of an axes system is defined in terms of the figure size. Take a look at the following sketch
The axis system is defined in relative terms of the figure. That means that you don't tell Matlab to make the axis system 6 cm wide but say 0.6 times the width of the figure. To define the position (i.e., location with in the figure and size) you have to define 4 values: the horizontal location of the lower left corner of the plot area with respect to the lower left corner of the figure, the vertical position of the corner relative to the bottom of the figure, and the width and height of the axes system relative to the figure size. In the example above, I want the figure to start at 60% width and 20% height of the window. The size of the plot area shouls be 30% and 70% of the figure's width and height.Here is an example where I am customizing the position option of the subplot function to create subplots without a gap between the axes systems. Sometimes Matlab places the figure such that there is not enough space for the x and ylabels, especially when you use larger fontsizes. In such cases I move the axes around until everyting fits:
pos = get(gca,'position'); set(gca,'position',[0.15 pos(2) pos(3) pos(4)]);
First I copy the current position of the axes system into the vector pos (the first element is the relative distance of the axes to the left edge of the figure, the second the vertical distance from the bottom, and then the width and height). Assuming that you need more space for the ylabel, you want to shift the axes system to the left but keep the rest of the settings. The second statement does exactly that.