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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
! C1 Q4 E+ q8 B' I( m( U  Yfigure;8 _$ H7 ~0 P5 q$ Q& r1 y1 _6 K1 g
%设置坐标轴线宽,加边框,坐标字号
" v+ v$ r3 N2 {axes('linewidth',1, 'box', 'on', 'FontSize',16);

/ }) \6 g) ^4 }+ R* S. ^%设置坐标轴label
0 `1 [4 l7 k, q& x  t$ Oxlabel('
时间(s)','FontSize',16);
0 h% r. Z# b7 B8 g% j( x  H! Hylabel('
压力(pa)','FontSize',16);: Q8 G3 v* ]/ U4 Y/ f: J2 P
grid on;
) D3 k# {: u, I' }5 s- vhold on;
" f3 C7 A0 n  g2 p. k. m! fplot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
0 D4 `3 Q- _/ K. ~- J9 s. j
%设置坐标轴上下限/ X7 J& H3 S  J6 I8 ^/ p4 n* g
xlim([0, 0.5]);
: u: d  f& N8 J' |8 p4 m" b! ^% t
ylim([5300000, 5800000]);3 \- N8 V6 f. o* i" G4 O
  X  L0 Z$ x! q* L6 F; R0 g
MATLAB
操纵坐标轴7 J/ M# v- F5 k0 a2 ^4 L: s' m3 W
axis off;        %
去掉坐标轴, m0 g  M7 d) G1 C. T8 T
axis tight;                     %
紧坐标轴; n0 `6 ?0 B! G" r
axis equal;                     %
等比坐标轴- K+ p6 f, l- w- o
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 ( q% o5 G2 m' t# I
; E+ `. H" a' L( K5 i/ b; M$ _+ S
% gca: gca, h=figure(...);
" P" I* ?& a( m: O  v$ _set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
# Y5 }' T6 [- B: j" T. Mset(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 + b- v$ ]; |, N% I
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号
/ }7 e1 b: j+ A  w  dset(gca, 'XTick', []);                     %
清除X轴的记号点; G4 [* Y# a0 B0 w1 @
set(gca, 'XGrid','on');                    % X
轴的网格3 K9 d5 d7 A/ b6 N
set(gca, 'XDir','reverse');                %
逆转X5 z2 L; S+ o2 L
set(gca, 'XColor','red');                  % X
轴的颜色
* d7 L. |5 H8 c4 [; M% [2 q: C% h' q, [
8 Q: v% T2 p3 c% @* G4 M3 O1 L

. u7 s, K, x$ b: @4 J, w[Matlab]图对象
$ n) }, j5 x0 o# R3 i0 m/ X) N5 Z
7 h3 ?( f" `1 Z/ N首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
. p/ o5 E' @( s9 u6 o0 S6 L8 }screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。# C- d9 Q( H% d' |/ Z
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
; p9 M8 n) M; \- R# W3 ?4 ~plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
& f6 V  k5 a! d% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。) e% L6 Y5 M% B
set (gca,'position',[0.1,0.1,1,1] );

) {( J: {/ [6 P$ G; N
5 [  }' L1 f0 j2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
1 I8 p  c: Q: Y0 v" \! _我摸索出比较好的方法是如下的代码:8 ~7 `7 S. T% ]* r, ?
%%%%%%%%%%%%%%%%%%%%%3 R- y. R& N2 X( |" [
%plot your figure before
: i8 x, w7 H+ \0 @1 B%%%%%%%%%%%%%%%%%%%%%
% J2 ^2 D9 {9 ]4 |9 r, R% figure resize
7 o8 ^5 \/ }- F# ], N, @set(gcf,&#39osition',[100 100 260 220]);
7 \4 U) j' F$ b3 E  kset(gca,&#39osition',[.13 .17 .80 .74]);  r" Y- o9 _5 N# L' A
figure_FontSize=8;  r) g) r/ x  e# M7 x
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
* D; S8 c3 m$ x5 v1 K( ?" ?set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
0 n6 [. K" X3 `  Pset(findobj('FontSize',10),'FontSize',figure_FontSize);
' _0 }7 C% h- u3 f4 b& gset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

0 j+ s3 s/ Z# s' z%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/ o! b# A/ O1 `解释:/ G0 F/ D3 ^2 H
set(gcf,&#39osition',[100 100 260 220]);
- q- Z% E2 m. T  k
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
! _- _) P% ^( iset(gca,&#39osition',[.13 .17 .80 .74]);
, X6 W. ?2 \- E- F: t3 e+ w
这句是设置xy轴在图片中占的比例,可能需要自己微调。$ o3 c5 d! |7 \' |/ O0 i
figure_FontSize=8;1 b7 r. V4 U. b6 }/ S- q
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');8 l/ f5 e0 H+ s# n  S8 _! t% q
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
0 j. I4 q- X4 B6 u+ v1 Aset(findobj('FontSize',10),'FontSize',figure_FontSize);
+ X  v% @& Q4 Z+ W& W
4句是将字体大小改为8号字,在小图里很清晰; b, [3 P3 O. z9 i
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
/ J- _7 Q  C$ g* h7 q' U这句是将线宽改为2
' G( {, Y& W( o4 \8 L# {" `9 d3.设置坐标轴参数/ u4 u0 V- A$ q9 a
1axis,设置当前轴的坐标范围;1 f! j4 |. T. l: g6 n
2axes,用指定的特征创建一个新坐标轴;
( }  u; H5 b" u0 e. @4 M5 c- u5 j
3getset,查询或设置已有轴的各种特性;
: M+ O4 A( r; O2 ^
4gca,返回当前轴的句柄。
7 S- B  f0 q1 |' m: f: l
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:- i, Q- B% C7 M: F, }
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
' p! a: [5 F% E! t0 V* ~0 M7 |4 W
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如6 g: ]+ X9 i, ?. ?, q* q1 ]+ y
set
gca,’ytick’,[-0.3:0.1:1];9 N- _( G3 M+ T9 Q/ J8 o
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
! a3 c7 W0 U" ]set(gca,’Xtick’,-pi:pi/2:pi);: G/ r; z% w! e7 ^
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};, `) j+ r4 ^$ f5 [$ d
Axis square
设置两坐标轴长度成相等。
8 A; ]4 p  n8 H+ A0 aAxis equel
设置坐标轴标记间距相等;
% g8 m4 P6 [% eAxis equel tight
;设置图形以紧缩方式显示。
7 Q" t. W7 H- Z) s5 B1 j5
.图形窗口/ G8 k$ Y- v# _0 Y; u
figure(2);%
以第二个图形窗口作为当前图形输出的窗口;
* J3 K0 X/ r( I+ f2 ?( esubplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;0 E5 J  O  A- H- V- n5 }
colordef
颜色;%如whiteblack等,设置绘图背景颜色。, c. P% a" [. ~6 Y# B
6
.图形标注7 ^7 S+ W6 `# {2 o6 k# D) l# H
Matlab
提供了几个函数用于图形的标注:1 x7 J: r* b) d; n! L
函数名功能描述6 [- w* L8 Q* |) P; p
Title
添加图形标题; ^/ \+ H+ Z) k/ k# P
Xlabel
xlabelzlabel添加XYZ轴标注1 G' ?& ~  F1 e1 ~( Y
Legend
在图形中添加图例
! G. n* Q6 F+ ~$ {# KText
在指定位置显示文本
& @  b/ {% W2 A' S4 t# Z. vGtext
使用鼠标将指定文本放在图形中的位置* i7 f) L) X. F4 Y0 \
如下为添加标题,坐标轴标注实例:: {$ v# n+ b" _
>> t=0:i/100:i*2;0 p  N( W  \7 P3 B
>> plot(t,sin(t));2 O* _9 u4 q2 c
>> xlabel('t=0 to 2pi','Fontsize',16);
! @  P5 c" x: P7 H; o>> ylabel('sin(t)','fontsize',16);
7 E3 Q4 f& K6 ~# I>> title('Value of the Sine from Zero to Two pi','fontsize',16)4 V- B7 d& \- m9 R( \5 ]+ n8 D0 n% L
注:标注时:pi显示成希腊字母,alphabeta
, \* Q! x3 S" }0 X( ]
在图形中添加标注与图例,如下:
; P& j1 _& S/ Z( S& N  S>> t=0:i/100:i*2;; W& c( X2 t" s. J- V2 P
>> plot(t,sin(t));
8 x1 t9 z* `- m3 d  D* E>> xlabel('t=0 to 2pi','Fontsize',16);
2 Q( ?& `- o' ^( Z>> ylabel('sin(t)','fontsize',16);9 i) ~8 R2 ~1 i# {
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
7 N, a" `9 B7 @# Y>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
5 O6 }# p# F+ K9 P) p. f+ \>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
5 B* d# g+ v) p! w& g4 Z& o2 K! P>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)" I) ^" \, X  L6 }/ `
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
8 ^; Y/ K! i8 G) P>> H=legend('con','sin',0)
%绘制图例" C) c. F5 b6 E. Y2 v3 s2 ^
5 k/ y9 N# N- |1 `" I

) V/ h' U& g8 [7 ~7 P- n
. L2 d4 J/ [0 P7 G改变坐标轴的显示位置4 Y- U# H$ N( B/ x  i! R3 \
set(gca, 'XAxisLocation', 'top')
" }# ?: H6 E" Z0 j5 Sset(gca, 'YAxisLocation', 'left')
* Q% J4 U( U! L$ g: H                    
, T/ U( v" {- h3 b& ?0 U5 G" {2 \5 e' q9 Q- r4 Y
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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