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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
% p' m% e2 e9 j* t, |  S6 G: kfigure;- t6 g0 N! K* V$ Q! D& _- w' l
%设置坐标轴线宽,加边框,坐标字号
0 l; Z. ^* i: k# o' z0 Maxes('linewidth',1, 'box', 'on', 'FontSize',16);

# @/ B. U+ \' z- P/ {* m- I$ l%设置坐标轴label
' D- @7 p. q4 ]& m+ sxlabel('
时间(s)','FontSize',16);6 z# S/ I0 S) y4 E
ylabel('
压力(pa)','FontSize',16);
/ O, s; O! I! b1 Pgrid on;
1 Z$ V+ e( b) c; `3 F! X# K$ z8 `1 ohold on;/ O( L" M# V' Y) }1 t
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
. C( ~$ L; @' Z) ^! _
%设置坐标轴上下限$ O! f7 v6 {7 a7 G9 x9 {
xlim([0, 0.5]);
; N8 {- h$ b+ U5 Q
ylim([5300000, 5800000]);
# C" k' V, F! F& T: R5 u# Y8 C; ?' y/ l& V- _( P
MATLAB
操纵坐标轴" @& |4 d8 W: r1 |) G/ z
axis off;        %
去掉坐标轴
+ x# U" z) k1 n8 A7 Xaxis tight;                     %
紧坐标轴
# I" {9 a- P- `% |* R/ ?axis equal;                     %
等比坐标轴
9 v, M: s( d% Gaxis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
6 m3 x: M8 m4 U( ^: M1 Q9 j. a# U  e+ r! C9 T
% gca: gca, h=figure(...);
/ M: ^! f9 p( G7 ^set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
$ n) Q+ A, h! e- [0 H/ g) @set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 7 F% p0 ^" |% g0 P
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号
9 w8 o: ?3 m4 {set(gca, 'XTick', []);                     %
清除X轴的记号点
( A$ @% J! ^1 iset(gca, 'XGrid','on');                    % X
轴的网格5 u5 Y# T8 }5 x0 O0 i" z, k2 j
set(gca, 'XDir','reverse');                %
逆转X1 _* R! w% L& c1 @
set(gca, 'XColor','red');                  % X
轴的颜色
* ^: C0 I# P5 Y, _* Y1 e) U- ]
. O" |! v! y& k( K+ f+ F8 M- L% V7 [3 L
# Y  p/ i4 M- R. \& w' T
[Matlab]图对象1 T# K1 D+ D5 h4 c% M
' G5 Y5 p( }9 A: ?$ t8 d+ y
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
/ [4 u, S6 A7 N2 d4 bscreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。" A) R, Z4 X. m, D
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
* W. }: U9 j3 ^% C6 zplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
( j8 y! E8 J; V. [% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
  a6 u2 {) B) t% j4 @) bset (gca,'position',[0.1,0.1,1,1] );

" [7 r, \5 _& q3 q; M1 ~$ c% m
/ t3 n6 l: X/ T2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
3 [& S; O4 K% y. T' o我摸索出比较好的方法是如下的代码:: Q* ]# {2 J0 L" p* A* e( _
%%%%%%%%%%%%%%%%%%%%%
) R5 }% L+ X: V+ s%plot your figure before% N6 v8 ^+ A3 ^* S3 }# O* e' u2 _
%%%%%%%%%%%%%%%%%%%%%$ B5 l+ K" S, v. w5 u6 M% Q. D
% figure resize
# R9 i6 X- _" s! h+ t" \set(gcf,&#39osition',[100 100 260 220]);
* w! ^4 v  }% |1 Yset(gca,&#39osition',[.13 .17 .80 .74]);2 o% h/ f. J7 ^8 P" K3 r' J( r; a
figure_FontSize=8;
1 L& D' X- m$ c9 D. Z$ r% Qset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');# Z& W( v* S: `9 R0 k
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
1 D2 ~" a8 l8 V/ a5 B+ [! m0 cset(findobj('FontSize',10),'FontSize',figure_FontSize);
6 {. k- h( `- c/ v  t/ A( |5 E8 Lset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
- _9 l6 c$ `+ X
%%%%%%%%%%%%%%%%%%%%%%%%%%%%4 w  T, x7 n/ T" b4 N
解释:
6 }+ p$ B$ R. d% W4 {' h# ?) aset(gcf,&#39osition',[100 100 260 220]);+ F; K; R1 x; `& j( \5 K, Y; Z
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
- m% d* G8 P$ ]9 m0 cset(gca,&#39osition',[.13 .17 .80 .74]);
8 i* s9 v7 _* r% u2 X' z0 g! E7 v( U& j
这句是设置xy轴在图片中占的比例,可能需要自己微调。  `1 ]7 m( p7 a
figure_FontSize=8;
8 @7 W+ l7 g3 M2 A- ~; X5 x' N7 `set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');! [( i, f3 N5 P1 p0 o6 z! W
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');* q$ p6 j) g3 S) E% H0 F6 G+ ?
set(findobj('FontSize',10),'FontSize',figure_FontSize);
: X$ v! v& o1 x
4句是将字体大小改为8号字,在小图里很清晰
6 ^; T, x. q1 W5 {5 M" D2 |set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
3 G3 l5 p, C/ a5 G% x; |& G$ Y/ ]这句是将线宽改为2, f# F4 X6 o) E3 g4 h8 T8 `: Q2 c
3.设置坐标轴参数4 |1 B4 i8 J6 t" Y* f0 P
1axis,设置当前轴的坐标范围;
6 e! W+ q" I& |+ h3 C5 l0 z
2axes,用指定的特征创建一个新坐标轴;
# q+ e) l* R$ l; r
3getset,查询或设置已有轴的各种特性;5 j6 q( M. \: @: q4 U1 R) F
4gca,返回当前轴的句柄。" o# A& @" ~7 t1 v8 [" x
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:8 l5 |, N" _+ R2 |
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
2 l# k1 ~* k/ V+ w; U7 h; |
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
6 H* z5 E' C- I: E5 ~set
gca,’ytick’,[-0.3:0.1:1];& d8 G# i& I9 ?2 t* _' Z
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
1 Y) Q. e3 i( pset(gca,’Xtick’,-pi:pi/2:pi);
* E) L" ^: z9 X& B0 uset(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};. t/ e# E( _2 R0 p# U
Axis square
设置两坐标轴长度成相等。. I$ g( l, j9 E
Axis equel
设置坐标轴标记间距相等;# u% X# I! r# F
Axis equel tight
;设置图形以紧缩方式显示。
- p+ n9 Z4 l. Y& R2 [5
.图形窗口
1 C" V5 C; }2 g) K. H: E9 ufigure(2);%
以第二个图形窗口作为当前图形输出的窗口;! Y- o- B6 ], w
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;
$ V2 P9 N1 J3 T0 a0 |4 K  P4 X$ Ecolordef
颜色;%如whiteblack等,设置绘图背景颜色。
0 t7 C% R1 w' B% f  Q6
.图形标注
/ o' S, `0 p8 Z3 d" AMatlab
提供了几个函数用于图形的标注:
  Z9 v# t% f1 \$ p# a! Z- C
函数名功能描述
% G5 _* C) a) i8 Q! m: PTitle
添加图形标题
+ I2 O, J) H5 W8 o9 G7 C% VXlabel
xlabelzlabel添加XYZ轴标注$ ~5 f/ p& a( ~% `; l+ i
Legend
在图形中添加图例3 H) y9 ~3 q( w4 f0 j
Text
在指定位置显示文本* r' R9 y/ ~1 k& m3 C) y6 t. {* O
Gtext
使用鼠标将指定文本放在图形中的位置9 `6 e  _( v! C  m7 o( N- g
如下为添加标题,坐标轴标注实例:
1 g' O5 r/ v" M3 ]0 _8 Z: _# y: y>> t=0:i/100:i*2;
) k7 {4 l4 [. a2 T! h8 i1 d+ C3 K>> plot(t,sin(t));3 L6 d* y; ~: w& n  n  n
>> xlabel('t=0 to 2pi','Fontsize',16);& Z3 K$ @7 w6 D
>> ylabel('sin(t)','fontsize',16);
" N/ h( b1 i% b8 R7 M! ~: B0 b>> title('Value of the Sine from Zero to Two pi','fontsize',16)
7 \# F2 s- P3 e8 g2 x/ @9 O
注:标注时:pi显示成希腊字母,alphabeta
  L$ p1 l% ~. R, x* I( Y
在图形中添加标注与图例,如下:, q) R3 \7 q3 c+ F# b' ~
>> t=0:i/100:i*2;
1 T. B& q0 H" _' _! [>> plot(t,sin(t));
( f1 e+ i3 m. |& ^>> xlabel('t=0 to 2pi','Fontsize',16);' B1 [2 e8 I* v; S- ]2 q$ {
>> ylabel('sin(t)','fontsize',16);
3 l! m# q) H- n8 m( p" O" }0 t0 s>> title('Value of the Sine from Zero to Two pi','fontsize',16)/ k7 o% z! Y! F  T
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
" l+ ?( U4 O% s! j  h>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)% k$ i# }7 ?8 ?2 i0 X
>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16): i: M) _1 F: O; v0 o8 \3 I
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
$ }& \. z: i0 b& b. a7 ]7 I# S>> H=legend('con','sin',0)
%绘制图例
$ v- K1 B1 q5 g / k0 _6 l( k9 D0 }

1 ]. K% I/ r, g$ R9 t! V% i& H1 k, D6 Y! \3 K9 u# r
改变坐标轴的显示位置  k  s8 K& v+ M" U. Q9 f# h- n. }
set(gca, 'XAxisLocation', 'top')0 b9 F7 J$ o+ o: x- e: A
set(gca, 'YAxisLocation', 'left')
3 g; \3 E  {8 a2 c                    & U6 h8 ]8 F; E. w6 E' J/ M

" ?) y# P; \! Q: `: V0 f: D9 O0 [! q/ v                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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