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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
9 O( |' d& c' t9 Rfigure;
, P+ y( K  D3 v: O( L8 J: G%设置坐标轴线宽,加边框,坐标字号
. i9 }9 t- Y9 H. l: Haxes('linewidth',1, 'box', 'on', 'FontSize',16);

  u1 Q  D& t6 e( @%设置坐标轴label" b. w0 ^) |: ~% B, L
xlabel('
时间(s)','FontSize',16);6 V. I  g7 B- ]. w7 b
ylabel('
压力(pa)','FontSize',16);: `! ]4 v! b1 J0 F6 j7 j9 u
grid on;
6 |6 y2 G4 [  G2 h, L% ahold on;4 G( B2 \" |7 J" p& I, \
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
5 y* [: g) T2 q/ Q
%设置坐标轴上下限
! [( u& X; i3 c( ~/ V- Hxlim([0, 0.5]);

! J6 ~! [/ l; W* b' sylim([5300000, 5800000]);
9 ?6 l& {2 i% [8 h$ T1 j* w- U. J7 C( z# j
MATLAB
操纵坐标轴
& E  A% ?' w, ~6 }( ^axis off;        %
去掉坐标轴
1 g7 }0 ]; `8 a/ }6 R8 C' |/ Haxis tight;                     %
紧坐标轴
4 i: X" {2 s' ?. K- E2 raxis equal;                     %
等比坐标轴) Z; X* d4 C2 }/ Q) O$ c
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
9 Z6 [2 y4 x" l7 B
4 g5 f' w, }6 D% gca: gca, h=figure(...);8 A7 c- s7 I9 [6 _2 n- S, M& \4 I
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围0 _) Y7 ^& U# }; B
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点
+ B9 R: ^3 w; K5 `7 ~$ ^set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号6 B/ W/ y4 o/ L, a$ w! g" v8 F
set(gca, 'XTick', []);                     %
清除X轴的记号点
: v# r9 s$ C2 oset(gca, 'XGrid','on');                    % X
轴的网格
$ S# f6 z& a! T, k1 U2 Hset(gca, 'XDir','reverse');                %
逆转X
2 ?; t4 |0 \. a, Z8 }' D% s: pset(gca, 'XColor','red');                  % X
轴的颜色7 d3 p+ `' p2 K
8 q- ^  G' S8 R. j
- U1 R) O2 S0 K

- i, q+ [9 U+ W/ A  ~$ ~( i[Matlab]图对象
$ J$ }( X! [0 O; `
; [' S+ V% h! ^& ]+ t* |, _2 ~& t3 Y首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
2 p! g% e: `4 q7 P  [screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
, p+ n' H: s! {# X) Efigure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。# ?% T$ F/ r4 S& S% _( Y
plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
) j7 D5 E! t4 s- A% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。; X1 R+ r; T) c, E8 L0 s
set (gca,'position',[0.1,0.1,1,1] );
9 ^* [5 E: o: O, ~9 c/ Z

* D- T. `% P' H$ W9 X- b) B2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
* e: S$ S. n- o" m我摸索出比较好的方法是如下的代码:
9 V# P8 Z4 ~  C+ J%%%%%%%%%%%%%%%%%%%%%
2 P) o  J% t3 {8 [: h& {8 Z* O%plot your figure before
& u' G0 K6 M6 e%%%%%%%%%%%%%%%%%%%%%/ F3 ?3 @, d$ k4 a1 n
% figure resize
: w7 W( p. o) a& P: Nset(gcf,&#39osition',[100 100 260 220]);
7 R) z1 m( S# ^* d# H, lset(gca,&#39osition',[.13 .17 .80 .74]);) x( j4 J' Y. B% b3 g- J
figure_FontSize=8;# h% e' h5 z: @
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
; F9 m( J+ f  k* y" S, ^5 Cset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
+ N0 a5 d' |2 Mset(findobj('FontSize',10),'FontSize',figure_FontSize);6 a# N1 A# V6 h  W3 C0 p( G" h
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
) L1 W2 f9 E& {: Y9 b* T* s
%%%%%%%%%%%%%%%%%%%%%%%%%%%%! H. ]% {- @5 p, ^
解释:
9 I; n& A+ s! C# bset(gcf,&#39osition',[100 100 260 220]);
+ x1 }, N7 d# a! u4 K" T! V
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
, d7 t8 S  k# a4 R) K* {- \: uset(gca,&#39osition',[.13 .17 .80 .74]);
5 }6 |. F- ?+ j5 i
这句是设置xy轴在图片中占的比例,可能需要自己微调。
# S5 e5 e# O0 D8 sfigure_FontSize=8;
2 n* ~. W5 W" T$ X3 fset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');2 ~( P) _$ e6 r( _; R4 D' E
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
2 q1 N3 I1 @: ~1 dset(findobj('FontSize',10),'FontSize',figure_FontSize);

) q6 o/ K2 X$ c# w/ z* i- q4句是将字体大小改为8号字,在小图里很清晰0 N$ I& K& ~; Q6 K( \
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
" [% H/ B( p! @$ I' y5 w7 Y" i这句是将线宽改为2
- t$ ?+ A6 h8 C. b$ R0 I* t. Q3.设置坐标轴参数
+ W) s7 h: j3 C
1axis,设置当前轴的坐标范围;
2 h' T4 W8 x: x1 s3 t
2axes,用指定的特征创建一个新坐标轴;
7 N2 B4 _2 S: ^
3getset,查询或设置已有轴的各种特性;
! L* P% Z* e, M4 p
4gca,返回当前轴的句柄。5 b- f6 O$ p& C, F# W
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:" n/ x: k/ _1 T7 q
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。5 p# W- j! @0 @1 i
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
- U, Q, Y7 s, g' C8 h; Q) o6 Wset
gca,’ytick’,[-0.3:0.1:1];
9 \: w5 [. `0 |
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
+ g+ {( e* Y9 T" s; `9 sset(gca,’Xtick’,-pi:pi/2:pi);7 y8 y& f2 A; `: I9 U: A) Z& \
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};" k5 S: _+ O/ T4 P' p" }7 M
Axis square
设置两坐标轴长度成相等。$ z! k& k+ D% H& |0 x" Q
Axis equel
设置坐标轴标记间距相等;
  r# C) W5 v% [! F5 G/ C; U) [5 TAxis equel tight
;设置图形以紧缩方式显示。
4 C" d, ?& {/ h7 x; U" k5
.图形窗口
1 h4 z6 {+ l  m8 H; Z1 p- }figure(2);%
以第二个图形窗口作为当前图形输出的窗口;& N, l8 J( Z& M1 X1 t/ a; ?
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;
& t! V1 m2 N5 m& p' s& }, b+ v/ y) }colordef
颜色;%如whiteblack等,设置绘图背景颜色。
2 a7 ~2 l: Y! O2 a4 n8 ^) \6
.图形标注
" O( P% z; ^3 f- C( f3 X/ OMatlab
提供了几个函数用于图形的标注:( T+ @/ l9 @+ N. K' |6 A+ I
函数名功能描述6 j9 Z, o; l; r" [8 B( j
Title
添加图形标题
3 Y+ Q3 H; Y% b3 N9 pXlabel
xlabelzlabel添加XYZ轴标注
8 a( a6 G. u# _4 o; JLegend
在图形中添加图例
8 X9 o: G) a( m- R% G$ ^Text
在指定位置显示文本  E! C2 V/ R/ i( C" r
Gtext
使用鼠标将指定文本放在图形中的位置7 g: d3 ]. R. O
如下为添加标题,坐标轴标注实例:2 Z2 V) ~* S0 L4 r! C: Z# u
>> t=0:i/100:i*2;
! Z$ U% ?8 U8 ]>> plot(t,sin(t));+ I6 }+ p% Q9 ^, k5 B1 ~; H) U5 L& T
>> xlabel('t=0 to 2pi','Fontsize',16);
" F0 D% [+ H5 `, J& t  x; B>> ylabel('sin(t)','fontsize',16);
9 r( S6 S! e* V7 _7 R3 r9 Q& h( l>> title('Value of the Sine from Zero to Two pi','fontsize',16); ]+ I) [5 E; ~, a/ I( ~
注:标注时:pi显示成希腊字母,alphabeta
1 p  g4 l+ S1 B. z& H) g
在图形中添加标注与图例,如下:
$ s/ r6 |# e- h. e, G2 v& v>> t=0:i/100:i*2;5 x; f$ l0 h% w5 i
>> plot(t,sin(t));
+ N1 F0 B, ]% @$ v3 V1 O>> xlabel('t=0 to 2pi','Fontsize',16);7 D) f3 U: J! @
>> ylabel('sin(t)','fontsize',16);
; t) j( I+ q# v7 o2 q0 l>> title('Value of the Sine from Zero to Two pi','fontsize',16)9 u* J- i0 M' w: o6 o
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
3 L0 _# t, R5 B1 N9 ]9 `8 t>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
2 e6 G( y  Q( y6 q. W- p8 _>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)8 d1 V, ~5 d+ @9 T3 t; n7 v
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
$ ?, ]6 b7 o3 Y>> H=legend('con','sin',0)
%绘制图例
- L" O" J2 D4 Z* k 5 L1 M# _/ a7 L, h) S

  a8 b* R8 a' u, F/ p. R! y8 ~5 |$ J/ ^4 q
改变坐标轴的显示位置
# |' I6 T6 T$ o7 W$ cset(gca, 'XAxisLocation', 'top')
  f, v( ?' G* Q2 Nset(gca, 'YAxisLocation', 'left')2 _7 {- l% G/ g* A
                    / Q9 `0 z4 k9 X
2 @7 A- d9 S6 {
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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