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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
. O' g5 g( @( L: zfigure;8 s) ^& N8 v% j% Y5 f
%设置坐标轴线宽,加边框,坐标字号& d! g3 G, [. X. ?
axes('linewidth',1, 'box', 'on', 'FontSize',16);
! E) ^5 C, K! ]* _$ g5 h/ S
%设置坐标轴label3 F) W2 ^. W$ r5 [6 c# K
xlabel('
时间(s)','FontSize',16);  n" k* r" e+ x. v( E- d
ylabel('
压力(pa)','FontSize',16);, ~: z* ~/ `. w9 H" u! F
grid on;8 ~1 _! L' h4 I+ q' v& A9 r6 ?
hold on;
3 N! A3 Y3 u9 y4 L  F/ Nplot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

7 S% \  o  l! O/ P$ Q, m9 c' _%设置坐标轴上下限
, g- ?  v2 b, t+ C( bxlim([0, 0.5]);

  C8 C! ~! z& p. W5 y) \- y( Kylim([5300000, 5800000]);
( m5 m! S+ W% |0 m/ Z9 }1 |+ N
3 i& v& f* I1 A+ \2 TMATLAB
操纵坐标轴7 h' g6 s, t3 R* x/ m( R! p( G! J
axis off;        %
去掉坐标轴0 G+ Y5 ]5 H4 [) q
axis tight;                     %
紧坐标轴$ E& E8 e# D" b0 D8 `
axis equal;                     %
等比坐标轴
4 v# Q+ E4 I$ E6 ?axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
, v. V# ^9 ]) q( K+ K: E: I
7 e; ^; Z- n- t$ O! j7 J0 G% gca: gca, h=figure(...);
8 o5 }2 M$ X7 R; oset(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
: o4 Y; b8 N+ c/ ~, z5 p" Y9 E5 }* Eset(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 8 J: ~, i: P6 l2 N+ h
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号, Q) N1 I; c# o& a  Q5 G; h
set(gca, 'XTick', []);                     %
清除X轴的记号点1 k8 R& y8 M8 Q* i. O6 ^+ e
set(gca, 'XGrid','on');                    % X
轴的网格
8 n: j' ]" M- fset(gca, 'XDir','reverse');                %
逆转X
; Q, i2 P; n% I1 Uset(gca, 'XColor','red');                  % X
轴的颜色5 h" D) N; Z# D" I: W

, @; h1 @0 n' P) v0 B; ?' i. {* H. O- V9 z

/ I# k3 _2 X* w1 V( A- R5 n" R[Matlab]图对象
& T) s: x3 [7 M& C' x* Y ; }3 ]. X. \9 m/ L# }: e) o7 P8 I
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie6 I8 @7 W8 D, H4 D7 }' `
screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
! X3 [& ], x* |  ?9 J) k" |# Kfigure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。; \% \" J' P) }5 w
plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])/ b! l- g% S6 f5 P  Z
% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
, `1 \9 P1 `' S  i) iset (gca,'position',[0.1,0.1,1,1] );
' t% `; @& E, a5 a- g0 A/ i

: I2 V. j+ @; H& ]* O7 e2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
8 m' I0 T* p3 q' O, D1 b  Z" d7 N我摸索出比较好的方法是如下的代码:+ x3 h; L& g5 q# x3 p8 K% A* o
%%%%%%%%%%%%%%%%%%%%%9 k' R8 k# w' k, _# ^1 e
%plot your figure before0 D! Z( \. A- L9 N( y3 W) L8 y
%%%%%%%%%%%%%%%%%%%%%
3 j( U5 E4 _) u  j6 e4 F& n% figure resize! |* p2 {# h) x* m% M3 `
set(gcf,&#39osition',[100 100 260 220]);
8 @5 {. C+ N8 B% V$ F9 O2 U/ W8 ^( @set(gca,&#39osition',[.13 .17 .80 .74]);
9 v0 {  a- a' d0 b+ yfigure_FontSize=8;- G" r  m, C" {6 \/ b
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');1 i* z7 f8 i8 d1 A
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
- W' g+ u$ _% p8 o, ~: x; Eset(findobj('FontSize',10),'FontSize',figure_FontSize);) ]! T) U0 |+ @6 T/ U  A
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

( ^+ J  W5 h! Q%%%%%%%%%%%%%%%%%%%%%%%%%%%%
, a0 N, P, @2 A2 Q解释:3 s3 o3 h0 w" i
set(gcf,&#39osition',[100 100 260 220]);9 R% c) m9 d% s( p9 h
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
# H4 i. T% U0 q' E$ ^+ M' Bset(gca,&#39osition',[.13 .17 .80 .74]);
- y/ u3 \- P, `  m
这句是设置xy轴在图片中占的比例,可能需要自己微调。9 p2 k+ j2 |: e0 W0 K" d
figure_FontSize=8;  V7 ~3 ^  \9 ?* _+ U: l
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
. t' a; Z, J; ?0 tset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
6 X0 M' I9 e5 `0 ~: Mset(findobj('FontSize',10),'FontSize',figure_FontSize);
1 ~' ?  h9 S# B; _7 W; N- W1 M
4句是将字体大小改为8号字,在小图里很清晰
% \6 |% B! `# K9 L. bset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);* M5 V. M! k% v5 ?# ~5 \
这句是将线宽改为21 S: n/ n- L1 H5 `
3.设置坐标轴参数, \/ t1 l' y* ^3 i% r" s
1axis,设置当前轴的坐标范围;  P! @) ^3 `$ M. I. _( V, R5 C
2axes,用指定的特征创建一个新坐标轴;
' H$ O- {7 z+ ~9 a/ \4 y
3getset,查询或设置已有轴的各种特性;5 o5 Z/ `/ J3 K) X+ U
4gca,返回当前轴的句柄。
3 w% X7 z' u3 ^: e0 L
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
# k3 u2 u' E- M% Z6 Q+ paxis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
" @8 a# t3 Q1 g/ N+ M( i! E2 `
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如, h9 {/ O, w' G8 {# g6 T
set
gca,’ytick’,[-0.3:0.1:1];
  Y2 u, L1 K8 z  |& r9 X+ S' J' Z
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
9 y' L- I/ M8 `4 N8 b  Rset(gca,’Xtick’,-pi:pi/2:pi);
; {" T% y- M) v2 dset(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
" F3 S6 w3 r$ _7 VAxis square
设置两坐标轴长度成相等。
9 l, ?7 t4 H4 N) M0 mAxis equel
设置坐标轴标记间距相等;
' L* j7 q- o2 T4 G/ T5 Q7 u% vAxis equel tight
;设置图形以紧缩方式显示。1 Z8 q6 F6 f  ~6 j. l
5
.图形窗口
3 d; i, a' @0 }; p' Q* jfigure(2);%
以第二个图形窗口作为当前图形输出的窗口;
2 d7 Y" S3 L: v+ v8 osubplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;% v2 f$ A9 k3 @' n) c. B) i
colordef
颜色;%如whiteblack等,设置绘图背景颜色。
) |) C/ b0 |( ?: ~2 y6
.图形标注
9 s1 A5 {. x6 W7 V; a& j) hMatlab
提供了几个函数用于图形的标注:0 f9 R8 m$ Y$ d2 u# T& [( T4 w
函数名功能描述
' V, z  g! s1 l' }- X* A4 ~" a8 pTitle
添加图形标题6 J( C. L% a, L8 l
Xlabel
xlabelzlabel添加XYZ轴标注2 v/ t1 d+ {5 P' c- C5 Z- L! g
Legend
在图形中添加图例. `- d  Z: v  r% A0 x1 n
Text
在指定位置显示文本! e7 k+ H: l7 h$ G# I* P$ Z
Gtext
使用鼠标将指定文本放在图形中的位置# a0 g7 f7 _+ T6 ]
如下为添加标题,坐标轴标注实例:
" c" N+ }1 S. Z, W; B. Y>> t=0:i/100:i*2;* W1 o+ U2 R/ Y( @
>> plot(t,sin(t));
: Q; S# m  `2 w' H>> xlabel('t=0 to 2pi','Fontsize',16);
. F: ~% U4 B' R! n>> ylabel('sin(t)','fontsize',16);
9 a! d- N& S" d; K>> title('Value of the Sine from Zero to Two pi','fontsize',16)5 ~, t$ j9 d- w# L
注:标注时:pi显示成希腊字母,alphabeta
% O' i& c+ V, T* M$ b' q
在图形中添加标注与图例,如下:$ w$ Z- _0 K& b# l4 }
>> t=0:i/100:i*2;8 r" G' o* b0 {; M: q" N
>> plot(t,sin(t));
6 B+ t, A) N& n; j>> xlabel('t=0 to 2pi','Fontsize',16);
2 g5 t* o: D6 `1 b6 G: x9 P>> ylabel('sin(t)','fontsize',16);+ S2 i0 y) n" @( g. U
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
) O6 G2 M7 G$ L, B>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)- Y+ l: G! C1 g- s
>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
; u. C! {' d3 V. p>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)
! ]2 `' b$ @! S' j" Q6 J6 s1 A  l>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
" }. I9 M/ \3 b>> H=legend('con','sin',0)
%绘制图例) M" e2 A( R& D! Y

7 W; s( [* I) Z! j: `! P3 b! A* E; w) v

3 X* R4 G( e' U2 v) ~改变坐标轴的显示位置" e1 J; s( j) ?+ v& d& v+ ?' j
set(gca, 'XAxisLocation', 'top'). e0 W/ a9 b! t" J* a# }5 e
set(gca, 'YAxisLocation', 'left')
. v9 }$ I! Y$ X& \( o9 o5 o2 A! z                    ) n$ ^4 y/ t# ?7 e1 y2 o6 j
* y0 \& V1 n* K- I- H5 m1 a
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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