收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。- \7 C$ C0 `5 z8 h; W; ]( g* f
figure;9 H& \$ b5 \2 _6 }9 j
%设置坐标轴线宽,加边框,坐标字号
, f9 K0 c! t9 S0 |8 G  Zaxes('linewidth',1, 'box', 'on', 'FontSize',16);
) v& I* c- ?0 F4 d# P9 ~
%设置坐标轴label
, b9 s* Q  S" s/ J5 Q% w1 `7 N5 v9 [xlabel('
时间(s)','FontSize',16);
2 Z1 ~5 z; @$ L+ Uylabel('
压力(pa)','FontSize',16);
' r" k, |) y; m9 r! w* Mgrid on;9 M8 a4 O* R1 h
hold on;
9 w6 m6 M) z# U" m5 `; Q& D5 |plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

- K7 f- U3 p* b%设置坐标轴上下限
0 q; y5 h9 D9 z3 h2 wxlim([0, 0.5]);

& D1 i+ j. C" Q& u2 Zylim([5300000, 5800000]);
' |6 @, W' B4 ?$ b& {! _0 o$ x# R7 a7 t3 I0 }+ ~/ o) k3 L
MATLAB
操纵坐标轴+ n7 b, F; y8 ~, b) b, e7 ?
axis off;        %
去掉坐标轴  s5 g: H1 C% e, w( @
axis tight;                     %
紧坐标轴, V7 [, ]/ ^, @. r" ^- Q
axis equal;                     %
等比坐标轴* q. q! d% C7 v) h% V
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
0 K" J0 @* _) s6 a, {- ]: q! _( q( o5 D0 D; n: N% ]0 V+ W
% gca: gca, h=figure(...);- t9 X+ U5 x$ s$ H$ @! x- B! \/ u
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围  G3 p4 x% {2 `/ L
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 6 C0 q$ x& W4 z7 u
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号8 e% [+ L  u: q/ Z- X. H
set(gca, 'XTick', []);                     %
清除X轴的记号点7 M+ |& H& _$ ?. ]' S
set(gca, 'XGrid','on');                    % X
轴的网格) Q. K- D: Y6 i! h
set(gca, 'XDir','reverse');                %
逆转X, f. B5 O9 Q: s2 _
set(gca, 'XColor','red');                  % X
轴的颜色( z, X4 O8 L* R& W: G

- M+ u& Q- b! k, P) Y" F9 x9 `. e4 @
7 K9 z4 C. ?( j8 B% S5 P8 l
[Matlab]图对象
% f* \& @  g4 F4 b% l1 ~! D
4 d! s) }( F+ @9 n( S首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie; S, ~! _1 ]# Z2 T4 ?  ?
screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
6 i/ t4 c, _- k# Ufigure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
% _5 }" F5 W( J5 @3 ~" V- e0 |/ m' nplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1]). j4 N0 H2 i7 Q- l5 d- v7 c: k% `! C
% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。, Y% ^+ Q, O! F( {- |9 G
set (gca,'position',[0.1,0.1,1,1] );
, m, R9 P- K0 N# I, W! Y

3 z5 @, L5 N$ d$ h( `2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。! v1 h' S0 ?% x2 G" y$ U
我摸索出比较好的方法是如下的代码:5 V, P% W& Y& M5 h# l% p
%%%%%%%%%%%%%%%%%%%%%1 c) ^  O. _) Q7 o# f
%plot your figure before
* K& O* l' D( P* Q%%%%%%%%%%%%%%%%%%%%%
) i/ f% h  e" d3 @+ R# F% G% figure resize
; X9 k( w' f/ [- wset(gcf,&#39osition',[100 100 260 220]);- L8 n7 f. T1 M
set(gca,&#39osition',[.13 .17 .80 .74]);
8 C- Z; ~, k$ `figure_FontSize=8;
7 D2 Y% h' q* I0 r3 vset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');6 O5 K$ g4 s2 A, Z
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
8 ]# A' |( g4 uset(findobj('FontSize',10),'FontSize',figure_FontSize);! d7 Q4 H$ ]) ]' z" \; B
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

" _& E6 J4 l% a0 x; m; _& g' G%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6 X( {* t: F! x) ^' b+ b8 c* P解释:2 e: g8 f4 V% D7 D2 \$ w
set(gcf,&#39osition',[100 100 260 220]);  A, Z7 h- G) v0 L: N  ^+ P, Y' E
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px' X/ I6 Y1 u+ k* [* _- `
set(gca,&#39osition',[.13 .17 .80 .74]);/ X6 q$ ?$ Y6 B* f
这句是设置xy轴在图片中占的比例,可能需要自己微调。0 D0 x0 k# k" I
figure_FontSize=8;- W6 Q8 y' G! Z
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');# E/ y" ]; |3 R. u
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');* z2 y7 q# N2 }+ q
set(findobj('FontSize',10),'FontSize',figure_FontSize);
  A2 s' e& h( C) R  p6 L
4句是将字体大小改为8号字,在小图里很清晰4 Y3 I, q# g3 y3 M
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
7 h) `+ U: K  g1 @" [这句是将线宽改为26 o+ a' |5 X: ]: Z- ?$ i
3.设置坐标轴参数
  u& Z* y5 Q, P+ o8 `2 E
1axis,设置当前轴的坐标范围;1 Q9 W5 v+ C# p/ m2 ~/ n: [
2axes,用指定的特征创建一个新坐标轴;8 c6 h$ @9 M+ ^# c% y1 B, O! }0 S
3getset,查询或设置已有轴的各种特性;3 W9 J5 h" k/ i5 Z
4gca,返回当前轴的句柄。5 V+ P) `: |$ m& z! n8 j
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:% ~& y' s9 _" K" [% w& e/ o
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。: t, {4 t7 C# l) g
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
: T! u3 E7 B4 x! V2 `4 Eset
gca,’ytick’,[-0.3:0.1:1];
( }! F1 y  j& L1 A& c3 ^
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:- r4 h4 c) k. y7 t. f/ ^
set(gca,’Xtick’,-pi:pi/2:pi);4 k1 O  S; k: Y" C! _& I
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
3 l+ n( W; K- C  \1 w9 H2 |Axis square
设置两坐标轴长度成相等。4 Z7 P% y. J+ }- r1 n+ n+ ~
Axis equel
设置坐标轴标记间距相等;
. f5 k0 O: j5 ?; M$ C  i- F3 H) oAxis equel tight
;设置图形以紧缩方式显示。/ J* D  ~7 n2 p1 ^7 ~+ J
5
.图形窗口/ \9 y* B* G4 |+ q+ w' [0 w
figure(2);%
以第二个图形窗口作为当前图形输出的窗口;; K% U+ {- h. }! b$ w8 A5 R
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;- ?9 |9 @- Z# V& E1 B5 Q
colordef
颜色;%如whiteblack等,设置绘图背景颜色。
5 g3 d4 t8 I9 B8 ?& l' f$ ^" |6
.图形标注
1 T$ E( R; e6 \5 ?/ I+ y5 r7 MMatlab
提供了几个函数用于图形的标注:0 b2 }# ~  \0 c
函数名功能描述
  Q% r  B, p1 y" I- \) mTitle
添加图形标题
" _( H1 [1 y5 `' \+ D1 U- [Xlabel
xlabelzlabel添加XYZ轴标注
' ?2 P2 n- }+ d8 i- ^0 w9 ELegend
在图形中添加图例
: a! W& ?2 N1 N% L( YText
在指定位置显示文本$ m/ L5 d( \$ P% h& w
Gtext
使用鼠标将指定文本放在图形中的位置
& u' z  f1 s3 D. e
如下为添加标题,坐标轴标注实例:4 v; w6 c: E, K# Y4 w
>> t=0:i/100:i*2;0 M+ }  P6 V" A9 W6 o$ j
>> plot(t,sin(t));1 o7 S4 X3 `$ A, S% Y
>> xlabel('t=0 to 2pi','Fontsize',16);# d4 j4 d# N/ H0 n2 Y
>> ylabel('sin(t)','fontsize',16);
9 N0 T$ H2 C: S* P>> title('Value of the Sine from Zero to Two pi','fontsize',16)
; A; X/ N, T4 v
注:标注时:pi显示成希腊字母,alphabeta* O" U; K# y5 }, ~/ t
在图形中添加标注与图例,如下:
$ X5 i9 K4 _( S>> t=0:i/100:i*2;
/ s; F& K8 n1 i) E% w0 a>> plot(t,sin(t));
( z0 B+ f# e' E8 k>> xlabel('t=0 to 2pi','Fontsize',16);
0 {5 ?8 m; H& N>> ylabel('sin(t)','fontsize',16);
: R( X9 i  i% R* u5 E>> title('Value of the Sine from Zero to Two pi','fontsize',16)
2 d7 |) w7 K/ t  `>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
9 F3 v+ N2 f5 Z( s, [! t3 x2 d- x>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)  d2 d" t' Y, K
>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)! A: j7 p$ D0 @4 P1 t3 A
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。- v: b! w% t8 ]0 E1 o' K/ n
>> H=legend('con','sin',0)
%绘制图例, I* \3 i- N1 l$ {9 m6 T" \, q

+ r0 W7 V; M, \1 f. C0 _/ `0 T$ F
# g$ A: n) J0 A5 U
改变坐标轴的显示位置
6 Q( d2 T$ L) @! ~" T0 i7 V( I, }& Xset(gca, 'XAxisLocation', 'top')
* d: L9 |# E$ H' b4 }$ Wset(gca, 'YAxisLocation', 'left')
% E0 Q) L' {! j% o                    
5 q4 D3 l0 {: z. E8 ^
* H7 @$ C% S' j" d/ v                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
黄金品质
活跃在2021-12-8
快速回复 返回顶部 返回列表