分享

MATLAB画图格式设置(转)

 那岩 2017-04-17

 

一、对数坐标图绘制函数:
在对数坐标图的绘制中,有三种绘图函数:semilogx,semilogy和loglog函
数.
1)semilogx( )------绘制以X轴为对数坐标轴的对数坐标图.
其调用格式为:semilogx(x,y,'属性选项')
其 中属性选项同plot函数.
该函数只对横坐标进行对数变换,纵坐标仍为线性坐标.
2)semilogy( )------绘制以Y轴为对数坐标轴的对数坐标图.
其调用格式为:semilogy(x,y,'属性选项')
该 函数只对纵坐标进行对数变换,横坐标仍为线性坐标.
35
3)loglog( )------ 绘制X,Y轴均为对数坐标轴的图形.
其调用格式为:loglog(x,y,'属性选项')
该函数分别对 横,纵坐标都进行对数变换.
例:x=0:0.1:6*pi;
y=cos(x/3)+1/9;
subplot(221), semilogx(x,y);
subplot(222), semilogy(x,y);
subplot(223), loglog(x,y);
4)MATLAB还提供了一个实用的函数:logspace( )函数, 可按对数等间距地分
布来产生一个向量,其调用格式为:

x=logspace(x1,x2,n)
这里,x1 表示向量的起点;x2表示向量的终点;n表示需要产生向量点的
个数(一般可以不给出,采用默认值50).
在控制系统分析中一般采用这种 方法来构成频率向量w.关于它的应用后面
还要讲到.
二.极坐标图的绘制函数:
绘极坐标图可用polar( )函数.其调用格式如下:
polar(theta, rho,'属性选项')------theta:角度向量,rho:幅值向量,属性
内容与plot函数基本一致.
例如:极坐 标模型为:3145/)/)cos((+ =θρ, ],[πθ80∈则绘出极坐标图
的程序为:theta=0:0.1:8*pi;
p=cos((5*theta)/4)+1/3;
polar(theta,p)
0.5
1
1.5
30
210
60
240
90
270
120
300
150
330
1800
三. 绘制多个子图:subplot( )函数
MATLAB允许在一个图形窗口上绘制多个子图(如对于多变量 系统的输
出),允许将窗口分成nxm个部分.
分割图形窗口用subplot函数来实现,其调用格式为:
subplot(n,m,k) 或subplot(nmk)------n,m分别表示将窗口分割的行数和列数,
36
k表示要画图部分的代号,表示第几个图 形,nmk三个数可以连写,中间不用
符号分开.
例如:将窗口划分成2x2=4个部分,可以这样写:
subplot(2,2,1),plot(……)
subplot(2,2,2),……
subplot(2,2,3),……
subplot(2,2,4),……
221 222
223 224
注:subplot函数没有画图功能,只是将窗口分割.

 

MATLAB画图格式

 

MATLAB提供了一些特殊的函数修饰画出的图形,这些函数如下:
1) 坐标轴的标题:title函数
其调用格式为:title('字符串')------字符串可以写中文
如:title('My own plot')
2)坐标轴的说明:xlabel和ylabel函数
格式:xlabel('字符串')
ylabel(' 字符串')
如:xlabel('This is my X axis')
ylabel('My Y axis')
3)图形 说明文字:text和gtext函数
A.text函数:按指定位置在坐标系中写出说明文字.
格 式为:text(x1, y1, '字符串', '选项')
x1,y1为指定点的坐标;'字符串'为要标注的文字;'选项'决定x1,y1
的 坐标单位,如没有选项,则x1,y1的坐标单位和图中一致;如选项为'sc',
则x1,y1表示规范化窗口的相对坐标,其范围为0到1.
(1,1)
规范化窗口
(0,0)
37
如:text(1,2, '正弦曲线')
B.gtext函数:按照 鼠标点按位置写出说明文字.
格式为:gtext('字符串')
当调用这个函数时,在图形窗口中出现一个随鼠标移动的大十字 交叉线,
移动鼠标将十字线的交叉点移动到适当的位置,点击鼠标左键,gtext参数中
的字符串就标注在该位置上.
4) 给图形加网格:grid函数
在调用时直接写grid即可.
上面的函数的应用实例:
例: 在图形中加注坐标轴标识和标题及在图形中的任意位置加入文本.
t=0:pi/100:2*pi;
y=sin(t);
plot(t,y),grid,
axis([0 2*pi -1 1])
xlabel('0 leq itt rm leq pi','FontSize',16)
ylabel('sin(t)','FontSize',20)
title('正弦函数图形','FontName',' 隶书' ,'FontSize',20)
text(pi,sin(pi),'leftarrowsin(t)=0','FontSize',16)
text(3*pi/4,sin(3*pi/4),'leftarrowsin(t)=0.707', 'FontSize',16)
text(5*pi/4,sin(5*pi/4),' sin(t)=-0.707rightarrow',...
'FontSize',16,'HorizontalAlignment','right')
画出的图形为:
0246
-1
-0.5
0
0.5
1
0 ≤ t ≤ π
sin(t)
正 弦函数图形
←sin(t)=0
←sin(t)=0.707
sin(t)=-0.707→
5) 在图形中添加图例框:legend函数
其调用格式为:
A.legend('字符串1', '字符串2', ……)------以字符串1,字符串2…… 作
38
为图形标注的图例.
B.legend('字符串1', '字符串2', ……, pos)------pos指定图例框显示的位置.
图例框被预定了6个显示位置:
0------ 取最佳位置;
1------右上角(缺省值);
2------左上角;
3------左下角;
4------右 下角;
-1------图的右侧.
例:在图形中添加图例.
x=0:pi/10:2*pi;
y1=sin(x);
y2=0.6*sin(x);
y3=0.3*sin(x);
plot(x,y1,x,y2,'-o',x,y3,'-*')
legend('曲线1','曲线2','曲线3')
绘出图形如下:
02468
-1
-0.5
0
0.5
1
曲 线1
曲线2
曲线3
6)用鼠标点选屏幕上的点:ginput函数
格式为: [x, y, button]=ginput(n)
其中:n为所选择点的个数;x,y均为向量,x为所选n个点的横坐标;
y为所选n个 点的纵坐标.
button为n维向量,是所选n个点所对应的鼠标键的标号:
1------左键;
2------中键;
3------ 右键.
可用不同的鼠标键来选点,以区别所选的点.
此语句可以放在绘图语句之后,它可在绘出的图形上操作,选择你所感
兴趣的 点,如峰值点,达到稳态值的点等,给出点的坐标,可求出系统的
性能指标.
39
第四节 MATLAB下图形对象的修改
MATLAB图形对象是指图形系统中最基本,最底层的单元,这些对象包括:
屏幕(Root),图形窗口(Figures), 坐标轴(Axes),控件(Uicontrol),菜单(Uimenu),
线(Lines),块(Patches),面(Surface),图像 (Images),文本(Text)等等.
根据各对象的相互关系,可以构成如下所示的树状层次:
Root
Figures
Axes Uicontrol Uimenu Uicontextmenu (对象菜单)
Images Line Patch Surface Text
对各种图形对象进行修改和控制,要使用MATLAB的图形对象句柄
(Handle).在MATLAB中, 每个图形对象创立时,就被赋予了唯一的标识,这
个标识就是该对象的句柄.
句柄的值可以是一个数,也可以是一个矢量.如每个计算机的根对 象只有
一个,它的句柄总是0,图形窗口的句柄总是正整数,它标识了图形窗口的序号
等.
利用句柄可以操纵一个已经存在的图形对象 的属性,特别是对指定图形对
象句柄的操作不会影响同时存在的其它图形对象,这一点是非常重要的.
一.对图形对象的修改可以用下面函数:
1)set函数:用于设置句柄所指的图形对象的属性.
Set函数的格式为:
set(句柄, 属性名1, 属性值1, 属性名2, 属性值2, ……)
例:h=plot(x,y)
set(h, 'Color', [1,0,0])------将句柄所指曲线的颜色设为红色.
2)get函数:获取指定句柄的图形对象指定属性的当前值.
格 式为:get(句柄, '属性名')
如: get(gca, 'Xcolor')------获得X轴的当前颜色属性值.
执行后可返 回X轴的当前颜色属性值[0,0,0](黑色).
3)如果没有设置句柄,则可以使用下列函数获得:
gcf:获得当前图形窗 口的句柄;
gca:获得当前坐标轴对象的句柄;
gco:获得当前对象的句柄.
如:
A.要对图形窗口的底色进行修 改,可用:
set(gcf, 'Color', [1,1,1])------将图形窗口底色设为白色
B.要把当前X轴的颜色改为绿 色,可用:
set(gca, 'Xcolor', [0,1,0])
40
C.还可对坐标轴的显示刻度进行定义:
t=-pi:pi/20:pi;
y=sin(t);
plot(t,y)
set(gca,'xtick',[-pi:pi/2:pi],'xticklabel',['-pi','-pi/2','0','pi/2','pi'])
-pi-pi/20pi/2pi
-1
-0.5
0
0.5
1
本例中用'xtick'属性设置x轴 刻度的位置(从-pi~pi,间隔pi/2,共设置
5个点),用'xticklabel'来指定刻度的值,由于通常习惯于用角度度量三角函
数, 因此重新设置['-pi','-pi/2','0','pi/2','pi']5个刻度值.
二.一些常用的属性如下:
1)Box属 性:决定图形坐标轴是否为方框形式,选项为'on'(有方框),
'off'(无方框);
2)'ColorOrder'属性:设置多条曲 线的颜色顺序,默认值为:
[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]
黄色 粉色 天蓝 红色 绿色 兰色
颜色向量还有:[1 1 1]------白色;[0 0 0]------黑色.
3)坐标轴方向属 性:'Xdir','Ydir','Zdir',其选项为:
'normal'------正常
'reverse'------反向
4) 坐标轴颜色和线型属性:'Xcolor','Ycolor','Zcolor'------ 轴颜色,
值为颜色向量
'LineWidth'------ 轴的线宽,值为数字
'Xgrid','Ygrid','Zgrid'------坐标轴上是
否加网格,值为'on'和'off'.
5)坐标轴的标尺属性:'Xtick','Ytick','Ztick'------ 标度的位置,值为
向量
'Xticklabel','Yticklabel','Zticklabel'------ 轴上
标度的符号,它的值为与标度位置向量同样大
小(向量个数相同)的向量.
5)字体设置属 性:'FontAngle'------ 设置字体角度,选项为:
41
'normal'------ 正常;
'italic'------ 斜体;
'oblique'------ 倾斜;
'FontName'------ 字体名称;
'FontSize'------ 字号大小
'FontWeight'------ 字体的轻重,选项为:'light',
'normal','bold'

三、 去掉边框, 空白区域。

 

首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie。
screen下面是figure。figue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
 

figure下面是axes。axes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。

plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[0 0 1])

% 设置坐标轴距离画板边距, 左右山下,依次调整图的空白区域。
set (gca,'position',[0.1,0.1,1,1] );

 

 

2.

用matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
我摸索出比较好的方法是如下的代码:
%%%%%%%%%%%%%%%%%%%%%
%plot your 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',[100 100 260 220]);
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是7cm
set(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



3.设置坐标轴参数
(1)axis,设置当前轴的坐标范围;
(2)axes,用指定的特征创建一个新坐标轴;
(3)get和set,查询或设置已有轴的各种特性;
(4)gca,返回当前轴的句柄。
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
axis([xmin,xmax,ymin,ymax]);如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtick和ytick的属性值,可以自定义坐标轴标记。如
set(gca,’ytick’,[-0.3:0.1:1]);
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
set(gca,’Xtick’,-pi
MATLAB画图格式设置(转)i/2MATLAB画图格式设置(转)i);
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
Axis square设置两坐标轴长度成相等。
Axis equel设置坐标轴标记间距相等;
Axis equel tight;设置图形以紧缩方式显示。
5.图形窗口
figure(2);%以第二个图形窗口作为当前图形输出的窗口;
subplot(m,n,i);%分成m×n个小区域,I指定当前绘图区域;
colordef 颜色;%如white,black等,设置绘图背景颜色。
6.图形标注
Matlab提供了几个函数用于图形的标注:
函数名功能描述
Title添加图形标题
Xlabel,xlabel,zlabel添加X,Y,Z轴标注
Legend在图形中添加图例
Text在指定位置显示文本
Gtext使用鼠标将指定文本放在图形中的位置
如下为添加标题,坐标轴标注实例:
>> t=0
MATLAB画图格式设置(转)i/100MATLAB画图格式设置(转)i*2;
>> plot(t,sin(t));
>> xlabel('t=0 to 2\pi','Fontsize',16);
>> ylabel('sin(t)','fontsize',16);
>> title('Value of the Sine from Zero to Two \pi','fontsize',16)
注:标注时:\pi显示成希腊字母,\alpha,\beta。
在图形中添加标注与图例,如下:
>> t=0
MATLAB画图格式设置(转)i/100MATLAB画图格式设置(转)i*2;
>> plot(t,sin(t));
>> xlabel('t=0 to 2\pi','Fontsize',16);
>> ylabel('sin(t)','fontsize',16);
>> title('Value of the Sine from Zero to Two \pi','fontsize',16)
>> text(3*pi/4,sin(3*pi/4),'\leftarrow=.707','fontsize',16)
>> text(pi,sin(pi),'\leftarrowsin(t)=0','fontsize',16)
>> text(5*pi/4,sin(5*pi/4),'sin(t)=-.707\rightarrow','HorizontalAlignment','right','fontsize',16)
>> gtext('graph of function sin(x)') %可以用鼠标指定字符串所需放设位置。
>> H=legend('con','sin',0) %绘制图例


 



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多