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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
3 s" S, L; h" a( ^1 z* Efigure;9 f( g1 u) U! r( @
%设置坐标轴线宽,加边框,坐标字号& V- a2 _% J; V* f2 |- p( q( A
axes('linewidth',1, 'box', 'on', 'FontSize',16);
$ T' b$ x5 A( g; l
%设置坐标轴label) K, e: H6 f# b& h( w/ V
xlabel('
时间(s)','FontSize',16);
! R5 V$ m+ {8 _ylabel('
压力(pa)','FontSize',16);' J/ D5 g& N" t7 \3 R+ M/ z4 G5 ]
grid on;( H" B; J5 c5 i
hold on;+ \8 s- f6 ]" {8 G9 c) s/ ^3 o4 {
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

3 T. H* @+ L+ y& w%设置坐标轴上下限
! \1 U. g! G+ r% D* _" _: gxlim([0, 0.5]);

+ i7 c# f: G7 [' {& y! ]: iylim([5300000, 5800000]);$ ]7 ]5 r, Q8 p8 {

3 i: V: @- x' o6 M. m: N( _& |. KMATLAB
操纵坐标轴
3 C; z# E5 n3 m, t% E( G7 l& r/ Haxis off;        %
去掉坐标轴4 r; j6 I9 b% G, Y' y0 e; a* W* ^
axis tight;                     %
紧坐标轴/ b+ l2 z( E' R4 N6 G
axis equal;                     %
等比坐标轴& b; x( \. I0 P+ b
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 1 G* k" C3 S. K/ ?

3 K8 _) g! T3 f+ [3 i% J% gca: gca, h=figure(...);  w! ^  h0 C( [3 Y+ N* _
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围' F( m+ n! ?' Y2 P% `, l) s
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点
8 x5 x" ^5 `$ L' ^  k$ iset(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号* E5 F9 k& s) W1 A# F, ^7 _% i
set(gca, 'XTick', []);                     %
清除X轴的记号点, V: B1 {# f! b3 @) q
set(gca, 'XGrid','on');                    % X
轴的网格0 B; H8 l$ o; H7 m3 C) F
set(gca, 'XDir','reverse');                %
逆转X2 q8 F+ @- [7 p
set(gca, 'XColor','red');                  % X
轴的颜色- ?6 v& K% i1 e" P
2 K; b& A; H5 |) G  v1 e% j$ l
9 v/ }0 R1 s# p- x" N% g, a, a7 z
9 e* b& \  k1 ~  ~9 X
[Matlab]图对象: \# i5 \5 [) |  K
  r' J5 @. _7 q" R0 }! V( Q) s
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie7 k' w" _3 `( r5 N0 |7 D
screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。3 a) |! n( L) a8 Q$ c6 p2 r
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。. e. M, U4 W9 N5 A, ^9 a* d
plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
* o) c0 J% U$ [# B8 t( Q% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
  K$ Z7 j* i6 F* k/ T6 H5 g/ Iset (gca,'position',[0.1,0.1,1,1] );

5 _; P: l! g; s6 x" [
- c+ S& g4 [4 l. A9 E2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。7 [' z9 U( X& ?5 U4 L6 K% L
我摸索出比较好的方法是如下的代码:
3 \) D" a2 N4 J# d( g! e%%%%%%%%%%%%%%%%%%%%%
* v4 F% k$ j7 H- i%plot your figure before
: v/ @- r, \: K! v3 t%%%%%%%%%%%%%%%%%%%%%" D# t" Q9 s4 V, z; P# p$ m
% figure resize* G5 P' x5 U3 f! m0 _2 Z
set(gcf,&#39osition',[100 100 260 220]);
. l- |7 Q. W. @' C3 k) Vset(gca,&#39osition',[.13 .17 .80 .74]);6 U1 G, _8 f' }1 N+ m
figure_FontSize=8;
" p' g7 ?5 o7 `( `+ ?set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
* X8 \7 b. ]. p% g: ?set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
% f6 v: e* W1 E0 ]9 zset(findobj('FontSize',10),'FontSize',figure_FontSize);
7 K7 v7 u$ A- T- C6 ^& I: V! ~; P2 vset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
* L; }- `2 {# ]& e! T7 c
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9 }" [, |3 q# \- Q解释:
$ Y" o9 p7 I' C# _+ b1 A$ X' Eset(gcf,&#39osition',[100 100 260 220]);! K! v4 m* v  k0 ?. H
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px+ s7 i. r3 h6 E8 X+ U- V
set(gca,&#39osition',[.13 .17 .80 .74]);: P* p* O6 j) o
这句是设置xy轴在图片中占的比例,可能需要自己微调。. s7 |/ u/ t8 V
figure_FontSize=8;2 Z  d7 F) W0 H$ T( z# J
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');3 q3 j. D: j+ ^& Q
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');! }4 P' h2 ^, S2 o! r, F
set(findobj('FontSize',10),'FontSize',figure_FontSize);

! F! o% h  \0 G* A3 Y# S% a, e0 o4 a4句是将字体大小改为8号字,在小图里很清晰9 P1 E; H( Y# i  w% @/ U& U1 l3 V
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
4 {, E, s' O7 u; }" n1 [# u; I这句是将线宽改为2+ ]$ W/ S' [" ~. A
3.设置坐标轴参数
2 B6 m" L( R0 L6 b2 P6 z
1axis,设置当前轴的坐标范围;$ b# \, Y$ H) y* }' y7 Y$ L1 D% P
2axes,用指定的特征创建一个新坐标轴;- k" }" M$ s3 c# [3 m
3getset,查询或设置已有轴的各种特性;
4 X  H* d  t7 s/ f' z
4gca,返回当前轴的句柄。# z: x* P. X- \$ B
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:/ x1 ]% a, E4 v2 r% p
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。& v) q8 M8 S2 @( I' N" X1 c4 k2 t
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如- W) {3 \  X* F  `, |, u7 O) X
set
gca,’ytick’,[-0.3:0.1:1];& y/ ~( E  w5 W  E) @4 k) h
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
) z* f# t& W/ {set(gca,’Xtick’,-pi:pi/2:pi);
2 B# T+ q) F, q: m" @' }. ^  |. Xset(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};$ h/ ]( S/ f9 G& s& c  V. r$ ]
Axis square
设置两坐标轴长度成相等。
: m. P% b! c5 I" ?; \& Y. lAxis equel
设置坐标轴标记间距相等;
1 d" l1 h5 @8 k  s' T. VAxis equel tight
;设置图形以紧缩方式显示。/ A7 N, o! G# t
5
.图形窗口- x4 h# W" a- w6 i5 L( ~( g5 Z  Z( l
figure(2);%
以第二个图形窗口作为当前图形输出的窗口;
2 _  J) ^- d' A$ J0 L5 ?subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;
+ C/ t! j- k3 P8 a, g" ]2 P% Fcolordef
颜色;%如whiteblack等,设置绘图背景颜色。
! q8 H2 h5 n, r+ r9 F- _( K5 E; s! B6
.图形标注
4 _* ?" C+ x9 }# Z$ k/ ZMatlab
提供了几个函数用于图形的标注:8 D  n9 i8 q4 N3 Z+ N
函数名功能描述
1 j. i; [7 J+ p* y) Q% p9 F5 cTitle
添加图形标题* D( i. m! z. i3 @
Xlabel
xlabelzlabel添加XYZ轴标注
1 z' N+ p  q. V) W8 ~& ILegend
在图形中添加图例
6 {3 [8 R  D( W  g. _8 U* x* @Text
在指定位置显示文本
# {9 Z3 q: M, J3 iGtext
使用鼠标将指定文本放在图形中的位置7 m3 |) e6 A! N5 N$ L
如下为添加标题,坐标轴标注实例:' d, t3 h* w5 O
>> t=0:i/100:i*2;& S& y% ~* T6 ^4 M1 {- |! }
>> plot(t,sin(t));$ J6 P2 F6 I0 z5 S' f
>> xlabel('t=0 to 2pi','Fontsize',16);7 W' P2 I) r; ?
>> ylabel('sin(t)','fontsize',16);
- B% N; z: l6 s$ {+ n>> title('Value of the Sine from Zero to Two pi','fontsize',16)
' i6 x! N3 G' X  K- Y5 K
注:标注时:pi显示成希腊字母,alphabeta7 V6 U1 g( S9 |0 `& C" k6 F
在图形中添加标注与图例,如下:4 ~: ]7 o. I; s' }+ g  H
>> t=0:i/100:i*2;
- N% E2 f& ^, O6 o8 [& m>> plot(t,sin(t));8 x: v. k5 U( F/ F: V( p
>> xlabel('t=0 to 2pi','Fontsize',16);( B) f- Z1 V" Y7 B7 d; _/ E/ I9 B
>> ylabel('sin(t)','fontsize',16);9 Z; f* d- x. w6 A6 j
>> title('Value of the Sine from Zero to Two pi','fontsize',16)2 ^2 d5 W) _9 ?% v& c
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)8 T* E  h4 k" X1 }/ N* ?
>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
$ I1 C# G( c+ C- N$ |>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)
" q9 g4 F9 A3 d! a>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。7 d0 D) O) O& r  \
>> H=legend('con','sin',0)
%绘制图例: M/ K7 p# B0 r% _' V0 g

5 D. a* i7 A3 q4 U. G
, a: q1 p) X1 n" x( m0 X2 D) w0 A5 A8 W  l1 b
改变坐标轴的显示位置  w$ j" _9 U1 P0 N
set(gca, 'XAxisLocation', 'top')
0 _1 |9 X  c0 r+ ?7 K  lset(gca, 'YAxisLocation', 'left')
: A8 d3 K9 c) @' t& r& E4 ]2 E                    
& s3 P2 F' [1 e# y' t; ^2 C% m' Q7 f$ b  u; b  l
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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