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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。0 K( Q' b' x7 M) [- A" W
figure;7 f. ]6 y/ I( v: R) E, ~; r: L
%设置坐标轴线宽,加边框,坐标字号% ]8 X5 L: E) Q  {
axes('linewidth',1, 'box', 'on', 'FontSize',16);

! o2 L- x7 Y3 k! M) r" Z%设置坐标轴label3 K# g  Y* t5 m" D. r! R& `  W
xlabel('
时间(s)','FontSize',16);
3 H! V4 {- u2 D2 y- X4 C$ s8 wylabel('
压力(pa)','FontSize',16);! F/ B5 [7 @, F. X: K- Q9 B
grid on;
5 K7 U7 T& ?' [# `hold on;$ [* R; `8 g1 W  D/ X
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
) l- [/ S9 A0 V8 Y( |, D, x2 F
%设置坐标轴上下限
: S( {- E7 E1 W7 i/ Rxlim([0, 0.5]);
1 v6 Y& e! s* I9 Z% D& Q' M' m
ylim([5300000, 5800000]);
1 Q) u5 N1 i* l9 f6 T1 U" R
/ E9 Q% K/ s3 `4 H6 M: lMATLAB
操纵坐标轴
4 d! b; @5 U+ `5 @0 ?+ ?* Waxis off;        %
去掉坐标轴$ O2 @  K2 e: F+ k
axis tight;                     %
紧坐标轴
# \0 x1 d3 B4 l0 e: o/ z0 F/ waxis equal;                     %
等比坐标轴! s7 V# F$ R/ y. P; k) H+ N
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 - K: S6 y  k7 g, b9 G" [4 m1 B
6 l* G' c9 N8 [( J6 Z
% gca: gca, h=figure(...);; Z" S! x, q1 n+ e1 n, q- G7 g
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
: \# N' X* M8 }' A4 Lset(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 : [) Q4 t& Z4 A! E! C7 x4 x; O, ?
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号
+ y! [' `: Z  N1 C# G8 Uset(gca, 'XTick', []);                     %
清除X轴的记号点7 x5 F4 a% c4 }$ Z; v' d' T
set(gca, 'XGrid','on');                    % X
轴的网格
, ~# N# _8 _9 [* U8 a3 H( cset(gca, 'XDir','reverse');                %
逆转X
: w2 |! s6 I8 N, j) H$ Uset(gca, 'XColor','red');                  % X
轴的颜色. H1 w' L4 N9 R
3 U7 H! U& C8 y5 l" @4 J' d/ ~

# o& ?* ?0 Z; P# I& l
, M, \4 ^( J  p5 _( }* a
[Matlab]图对象% P4 j! M0 y0 d

+ r3 h7 r) V& D0 Y首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
3 d8 w+ a/ y3 ?7 tscreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
$ X* @$ S+ X$ Tfigure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
- x1 E* ^! h& [, d6 ^4 f9 k* Yplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
9 V7 p2 p8 }+ m& v% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。# R+ u7 e' s: ^5 x! B
set (gca,'position',[0.1,0.1,1,1] );
+ M# p6 _2 {: z( _# Z; c
4 \' a4 l4 r$ U3 H8 l7 L" E7 ~$ [
2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
* l  c* ~" K  j; w+ w8 ^我摸索出比较好的方法是如下的代码:3 O. [" X; c: f7 m$ G
%%%%%%%%%%%%%%%%%%%%%
1 d. O" l8 j6 v/ N' X( Z: P1 D/ R%plot your figure before! G8 [. c' q3 `  H- F7 A
%%%%%%%%%%%%%%%%%%%%%& d' {& n' I, [) S% C+ U/ b
% figure resize
# `& N- G$ {# c1 C: iset(gcf,&#39osition',[100 100 260 220]);
& W" E5 p: ~6 d$ e6 Cset(gca,&#39osition',[.13 .17 .80 .74]);
3 [8 S3 M9 t& K% z, D" W$ x9 Zfigure_FontSize=8;+ a/ k0 X- o$ F6 u) {& W  I
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
) ~; h- ~6 [/ m+ P. i! ~set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
/ F0 H/ p5 b! j$ Vset(findobj('FontSize',10),'FontSize',figure_FontSize);3 @: d9 b: S' B$ D
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
8 I1 `8 Z& I- n- K6 e  R
%%%%%%%%%%%%%%%%%%%%%%%%%%%%' ]$ C* D2 X& t" C- ^4 D3 X
解释:9 w" i$ R4 ]- ^" O
set(gcf,&#39osition',[100 100 260 220]);7 o5 m/ w# d; x& r, q3 [/ k3 q
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
& O: B; W# E+ g: u2 Pset(gca,&#39osition',[.13 .17 .80 .74]);
+ t6 c7 }- k/ w( N. H* F3 t
这句是设置xy轴在图片中占的比例,可能需要自己微调。& j& E8 i7 G( h- I4 v+ s
figure_FontSize=8;
( ^/ z  A8 m! N2 k- r* l; Cset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
& A3 X0 t% Q' k; Zset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');1 k5 R# ?1 ]0 I) z% |: d
set(findobj('FontSize',10),'FontSize',figure_FontSize);

3 G$ {+ ^* P8 }  h5 q: g& ?, W4句是将字体大小改为8号字,在小图里很清晰7 ^/ f% c/ w) K, E6 S9 g$ o. z
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);; |/ A8 e( D" J! y1 g/ x  i! \+ S
这句是将线宽改为2: G9 r( g9 t. S" ]
3.设置坐标轴参数
5 K3 N$ v3 O$ z* ?8 w0 j
1axis,设置当前轴的坐标范围;; C) l/ `1 F- K, R2 ?
2axes,用指定的特征创建一个新坐标轴;0 d; J6 W% m3 O5 t
3getset,查询或设置已有轴的各种特性;3 \* G, R  b& u" D+ P- L' ~1 y
4gca,返回当前轴的句柄。! k  t5 c" z' K2 `
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:! Y- O6 I1 \8 v
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。. b" z, J8 `$ D7 \+ t
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如* w/ H' i* D- C$ e  y2 ?1 R2 m- r
set
gca,’ytick’,[-0.3:0.1:1];
* e6 V/ l1 F5 s+ f. s  t& ]" d
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
8 m  ~- C, P" l* a; C+ o5 \set(gca,’Xtick’,-pi:pi/2:pi);+ \1 A' F" V  w* Z
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
2 j3 U3 }  C# O  DAxis square
设置两坐标轴长度成相等。% v: X9 M2 ]. `) T- W: {, _
Axis equel
设置坐标轴标记间距相等;: R" y( f9 M7 k+ {4 D+ ^
Axis equel tight
;设置图形以紧缩方式显示。6 s+ P8 H; ]2 Q
5
.图形窗口+ I  k* p6 t. K6 h6 x* A1 n
figure(2);%
以第二个图形窗口作为当前图形输出的窗口;
6 I9 Q" a& F4 t; C. |* c6 i6 ksubplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;
- ^3 N( \8 ?7 }; }0 J. ycolordef
颜色;%如whiteblack等,设置绘图背景颜色。2 ?6 f( f0 x$ p6 `& b
6
.图形标注; j* j# y, ]6 R. p5 ?
Matlab
提供了几个函数用于图形的标注:9 y9 |3 w$ e2 \. ?2 q
函数名功能描述
* [- e- t: q+ W, T9 G0 \& \Title
添加图形标题% G% K. _& \( o7 e
Xlabel
xlabelzlabel添加XYZ轴标注/ Z- q2 ?! S. f" A; v, e
Legend
在图形中添加图例
* a2 Y; ]( i2 b6 l6 \0 AText
在指定位置显示文本
3 z) `2 D% [2 D0 c) k8 \Gtext
使用鼠标将指定文本放在图形中的位置) K! ?4 N) F# l1 C: e
如下为添加标题,坐标轴标注实例:
$ ^  T% O% \# t. G0 @* E% ^>> t=0:i/100:i*2;
3 }$ {+ t- f* A6 Q4 ]/ G>> plot(t,sin(t));; }: f0 C( k- u& H& ]  X
>> xlabel('t=0 to 2pi','Fontsize',16);
) u* ?% ^  E* h* `" y& F>> ylabel('sin(t)','fontsize',16);
, O& t2 |2 j% ?$ ^7 P- T>> title('Value of the Sine from Zero to Two pi','fontsize',16)0 e3 }3 E; w5 I* C2 G
注:标注时:pi显示成希腊字母,alphabeta6 k, h. e# D2 L
在图形中添加标注与图例,如下:2 l8 ]+ h% k% Z3 d
>> t=0:i/100:i*2;# c/ e- B8 u" W! p. n7 O& v0 e; Q* J, @
>> plot(t,sin(t));
2 z* a  V: `: a6 q>> xlabel('t=0 to 2pi','Fontsize',16);3 p3 N7 P0 k8 g6 R8 S+ A) L7 u2 P
>> ylabel('sin(t)','fontsize',16);4 A8 X" i: F3 j4 q8 k
>> title('Value of the Sine from Zero to Two pi','fontsize',16)/ l) @) h" L( w) `0 h; O7 G) S
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
7 m' S6 y2 m+ _5 \>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16). x/ V6 G9 Y' O6 t! c9 e
>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)" O2 z, e! e, O# O- ~4 G. M0 ]
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。0 n" W+ P% I' j, u
>> H=legend('con','sin',0)
%绘制图例
! G4 ~! [- p. A/ N* l, D
9 F# }/ a+ @4 Y0 Y# C; f- P; h0 M: x' g4 Z2 ~6 p$ E  T, F

# T! e' `+ q3 f改变坐标轴的显示位置
3 _' u  p+ H3 a% Z. Q+ @set(gca, 'XAxisLocation', 'top')
$ d& v$ M3 b) w9 V6 }- q$ q0 Uset(gca, 'YAxisLocation', 'left')' z# Z) Z) t3 ^; x0 Q% x
                    
8 M: b6 n* J! x7 z6 k% p, [; s  D4 ?0 e
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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