matlab调整legend方框大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab调整legend方框大小相关的知识,希望对你有一定的参考价值。

% 这里要画一个2*2共4幅子图。先将第1个子图的位置调整。

h = subplot( 2, 2, 1); % 先让MATLAB默 认绘制第1幅子图,h是子图1的句柄

po = get( h, 'Position' ); % get命令从句柄h中获取'Position'的内容,返回一个含4个元素的一维数组放到po中。这4个元 素分别是子图1的left, bottom, width, height。

subplot( 'Position', [po(1)+0.03, po(2)-0.03, po(3), po(4)]); 子图1的新位置可以这样调整

%----------------------------------

hold on;

axis([0 13 -3 2]);

set( gca, 'XTick', [1:12] ); gca表示当前对象句柄,set命令分别对当前对象(即子图1)设置坐标轴XTick和YTick属性。这 两个属性分别表示了坐标轴的实际绘值范围。

set( gca, 'YTick', [-3:1:2] );

title( 'The North Hemisphere' );

plot( 1:12, bc, '-r.', 'MarkerSize', 10 ); 子图1中第1条曲线用实线绘,带有圆点,红色。MarkerSize属性设 置圆点的大小是10。这样画出来的就是实心圆了。

plot( 1:12, nit, '-b.', 'MarkerSize', 10 );

plot( 1:12, sul, '-g.', 'MarkerSize', 10 );

plot( 1:12, poa, '-m.', 'MarkerSize', 10 );

plot( 1:12, soa, '-k.', 'MarkerSize', 10 );

%zeroArr = zeros( 14 );

%plot( 0:13, zeroArr, '--k' )

xlabel( 'Month' );

ylabel( 'Radiative Effect (Wm^-^2)' ); 单位里有上标,^表示后续一个字符为上标。

下述代码绘子图2、3、4,雷同。

%--------------------------------------------------------------------------

% NH Radiative Forcing Fut-Mod 子图2

fid_bc=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_NH\bc.dat','r');

bc = fscanf( fid_bc, '%f', [1,12]);

fclose( fid_bc );

fid_nit=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_NH\nit.dat','r');

nit = fscanf( fid_nit, '%f', [1,12]);

fclose( fid_nit );

fid_sul=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_NH\sul.dat','r');

sul = fscanf( fid_sul, '%f', [1,12]);

fclose( fid_sul );

fid_poa=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_NH\poa.dat','r');

poa = fscanf( fid_poa, '%f', [1,12]);

fclose( fid_poa );

fid_soa=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_NH\soa.dat','r');

soa = fscanf( fid_soa, '%f', [1,12]);

fclose( fid_soa );

%----------------------------------

h = subplot( 2, 2, 3, 'replace' );

po = get( h, 'Position' );

subplot( 2, 2, 3, 'replace' );

subplot( 'Position', [po(1)+0.03, po(2)+0.03, po(3), po(4)]);

%----------------------------------

box on;

hold on;

axis([0 13 -3 2]);

set( gca, 'XTick', [1:12] );

set( gca, 'YTick', [-3:1:2] );

%title( 'NH Fut-Mod' );

plot( 1:12, bc, '-r.', 'MarkerSize', 10 );

plot( 1:12, nit, '-b.', 'MarkerSize', 10 );

plot( 1:12, sul, '-g.', 'MarkerSize', 10 );

plot( 1:12, poa, '-m.', 'MarkerSize', 10 );

plot( 1:12, soa, '-k.', 'MarkerSize', 10 );

%zeroArr = zeros( 14 );

%plot( 0:13, zeroArr, '--k' )

xlabel( 'Month' );

ylabel( 'Radiative Forcing (Wm^-^2)' );

%--------------------------------------------------------------------------

% SH Radiative Effect Mod-Noall 子图3

fid_bc=fopen('D:\_CurrentPaper\RadiativeForcing\ModNoall_SH\bc.dat','r');

bc = fscanf( fid_bc, '%f', [1,12]);

fclose( fid_bc );

fid_nit=fopen('D:\_CurrentPaper\RadiativeForcing\ModNoall_SH\nit.dat','r');

nit = fscanf( fid_nit, '%f', [1,12]);

fclose( fid_nit );

fid_sul=fopen('D:\_CurrentPaper\RadiativeForcing\ModNoall_SH\sul.dat','r');

sul = fscanf( fid_sul, '%f', [1,12]);

fclose( fid_sul );

fid_poa=fopen('D:\_CurrentPaper\RadiativeForcing\ModNoall_SH\poa.dat','r');

poa = fscanf( fid_poa, '%f', [1,12]);

fclose( fid_poa );

fid_soa=fopen('D:\_CurrentPaper\RadiativeForcing\ModNoall_SH\soa.dat','r');

soa = fscanf( fid_soa, '%f', [1,12]);

fclose( fid_soa );

%----------------------------------

h = subplot( 2, 2, 2, 'replace' );

po = get( h, 'Position' );

subplot( 2, 2, 2, 'replace' );

subplot( 'Position', [po(1)-0.03, po(2)-0.03, po(3), po(4)]);

%----------------------------------

box on;

hold on;

axis([0 13 -1.2 0.8]);

set( gca, 'XTick', [1:12] );

set( gca, 'YTick', [-1.2:0.4:0.8] );

title( 'The South Hemisphere' );

plot( 1:12, bc, '-r.', 'MarkerSize', 10 );

plot( 1:12, nit, '-b.', 'MarkerSize', 10 );

plot( 1:12, sul, '-g.', 'MarkerSize', 10 );

plot( 1:12, poa, '-m.', 'MarkerSize', 10 );

plot( 1:12, soa, '-k.', 'MarkerSize', 10 );

%zeroArr = zeros( 14 );

%plot( 0:13, zeroArr, '--k' )

xlabel( 'Month' );

%ylabel( 'Radiative Effect (Wm^-^2)' );

%--------------------------------------------------------------------------

% SH Radiative Forcing Fut-Mod 子图4

fid_bc=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_SH\bc.dat','r');

bc = fscanf( fid_bc, '%f', [1,12]);

fclose( fid_bc );

fid_nit=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_SH\nit.dat','r');

nit = fscanf( fid_nit, '%f', [1,12]);

fclose( fid_nit );

fid_sul=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_SH\sul.dat','r');

sul = fscanf( fid_sul, '%f', [1,12]);

fclose( fid_sul );

fid_poa=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_SH\poa.dat','r');

poa = fscanf( fid_poa, '%f', [1,12]);

fclose( fid_poa );

fid_soa=fopen('D:\_CurrentPaper\RadiativeForcing\FutMod_SH\soa.dat','r');

soa = fscanf( fid_soa, '%f', [1,12]);

fclose( fid_soa );

%----------------------------------

h = subplot( 2, 2, 4, 'replace' );

po = get( h, 'Position' );

subplot( 2, 2, 4, 'replace' );

subplot( 'Position', [po(1)-0.03, po(2)+0.03, po(3), po(4)]);

%----------------------------------

box on;

hold on;

axis([0 13 -1.2 0.8]);

set( gca, 'XTick', [1:12] );

set( gca, 'YTick', [-1.2:0.4:0.8] );

%title( 'SH Fut-Mod' );

plot( 1:12, bc, '-r.', 'MarkerSize', 10 );

plot( 1:12, nit, '-b.', 'MarkerSize', 10 );

plot( 1:12, sul, '-g.', 'MarkerSize', 10 );

plot( 1:12, poa, '-m.', 'MarkerSize', 10 );

plot( 1:12, soa, '-k.', 'MarkerSize', 10 );

%zeroArr = zeros( 14 );

%plot( 0:13, zeroArr, '--k' )

xlabel( 'Month' );

%ylabel( 'Radiative Forcing (Wm^-^2)' );

我将legend放在了子图4上。

gca=legend( 'BC', 'Nitrate', 'Sulfate', 'POA', 'SOA', 4 ); 4表示把legend放在子图的右下角,还有几个数字的含义是:

0 = Automatic "best" placement (least conflict with data)

1 = Upper right-hand corner (default)

2 = Upper left-hand corner

3 = Lower left-hand corner

4 = Lower right-hand corner

-1 = To the right of the plot

po=get( gca, 'Position' ); 发现这样放置后legend要挡住图,因此需要再微调一下。获得legend的'Position'值。

set( gca, 'FontSize', 8, 'Position', [po(1)-0.01, po(2)+0.01, po(3), po(4)] ); 重新设置legend的位置,同时设置legend里面的字体为8号。

legend('boxoff'); 不画legend的外框。

强调的是上述调整legend的值要不断地试。因为legend相对子图的位置还要随画图窗口大小变 化而变化。如果你看不懂这句,试试就知道了。

我一般是将MATLAB画出的图打印成PDF,再用Acrobat打开截屏,贴到WORD中,这样图 像质量似乎比较好。谁还有更好的将MATLAB图转贴到WORD的方法,欢迎赐教。
参考技术A 答:matlab调整legend方框大小
1. MATLAB如何从硬盘读取文件。
2. 如何微调subplot子图的位置。
3. plot命令绘曲线时,曲线上的标志如何调整大小。
Matlab 画图 图例大小调整
1. 首先打开Matlab ,点击选择图形编辑区域的添加图例按钮insert legend。
2. 然后在新的界面里自动跳出图例,
参考技术B Matlab可以通过设置legend属性来调整legend方框的大小,你可以在matlab命令行中输入下面的语句来实现:set(legend,'Position',[X Y W H]),其中X、Y分别表示legend方框左上角的x、y坐标;W、H则表示legend方框的宽度与高度。 参考技术C 你可以在Matlab中调整legend方框大小,只需使用legend函数中的'position'参数,设置其指定位置和大小即可。 参考技术D 在MATLAB中,可以使用“legend('FontSize', N)”来调整legend方框的大小,其中N为你想要的字体大小。

matlab 如何画红色方框

在matlab 下,如何把一个正方形区域用一个红色的方框框出来
在matlab下,如何把一张rgb图片中的一个特定的正方形区域用一个“红色”的方框框出来

可以尝试用rectangle('position',a,b,c,d,'edgecocol','r')来添加红色矩形框,其中,a为起始点col,b为起始点的row,c为Width,d为Height 参考技术A 用plot可以做出一个矩形,例:
plot([1,1,-1,-1,1],[-1,1,1,-1,-1],'Color',[1,0,0]);
axis([-2,2,-2,2]);

用rectangle似乎更简洁一点,如:
rectangle('position',[1 2 5 5] );
得到左下坐标( 1, 2 ),边长为5的正方形;
但是我不知道怎么在这里指定线条颜色。本回答被提问者和网友采纳
参考技术B rectangle('position',[1 2 5 5], 'EdgeColor','green');
这才是正确的用法,同时改颜色用的是EdgeColor来指派,答主这个连拼写都错了而且abcd也没用矩阵包起来,怎么混的最佳答案。

以上是关于matlab调整legend方框大小的主要内容,如果未能解决你的问题,请参考以下文章

大家好!matlab中如何调整legend的位置? 谢谢!

matlab中如何调整legend的位置?

matlab中legend应该画在图像的哪个位置

如何通过指令将matlab的legend设置在图的左上方

如何设置MATLAB中legend标注线条的长短?

matlab legend不覆盖