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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。& G; G6 u7 n$ d% ?( `
figure;9 l* G) E$ B+ D/ M, L1 q( x# H/ l  E
%设置坐标轴线宽,加边框,坐标字号. f! r; l$ Q1 ]1 W" F7 b
axes('linewidth',1, 'box', 'on', 'FontSize',16);

  D9 ^$ t* N9 {4 b. W%设置坐标轴label; w! W0 B: [8 I4 w! L
xlabel('
时间(s)','FontSize',16);: S. ], `/ r2 A3 R% _; ^: M
ylabel('
压力(pa)','FontSize',16);* E$ A$ i6 ~- N0 M. {: a2 R0 ^
grid on;4 B; Q6 A! A) W. B6 l4 f
hold on;/ o' ^5 V& W3 E( S4 r5 O3 G
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

+ [. m) M# F$ p6 e: U2 B% V%设置坐标轴上下限
0 b# {7 m: T: O- Txlim([0, 0.5]);
$ L( l+ Z6 O! c5 |4 A& V" y
ylim([5300000, 5800000]);
* A: U3 c) F* p( \( b0 R% u6 x
) K5 i- @% M' {% \MATLAB
操纵坐标轴
9 O+ u; G5 `- ]$ C4 \8 D. d5 p, laxis off;        %
去掉坐标轴* A) a2 x9 ~4 b2 y5 A8 K
axis tight;                     %
紧坐标轴
* B! u5 c, H# Z) F2 C7 `axis equal;                     %
等比坐标轴& o8 I4 |4 o6 b1 F" C" K
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 : M* v' I3 }3 h+ H  e8 n: }. P
0 [+ z( W: h" g8 q1 \" g
% gca: gca, h=figure(...);
9 U/ `5 _0 z! ~0 `set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围3 g/ W& k+ P3 T( E5 J( Q! ~* {
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 ( e3 j  {6 Q2 j
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号8 V9 \; r) g. W6 s# z' b
set(gca, 'XTick', []);                     %
清除X轴的记号点. k+ m# ~* W# p' [7 i( A5 z4 p
set(gca, 'XGrid','on');                    % X
轴的网格/ B+ [. \5 F0 T+ a% |9 @# [1 P
set(gca, 'XDir','reverse');                %
逆转X
' l& M- G) o) H5 C& fset(gca, 'XColor','red');                  % X
轴的颜色
8 d# o0 j. i& B+ {9 `3 U% F8 t/ Z, s' h) i! r- s. C

, q9 x# {: W2 \" M/ y$ x

; g+ F$ p5 ^) q9 \3 \[Matlab]图对象9 a. ]$ f1 m1 J5 Q
) G- |% V8 @* R% X! Z
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
0 o; o& h! L7 V8 C' x" T' i/ zscreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。* ~% p, x, ?# S# K" m
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。' E6 u0 _1 y+ [5 `5 \, M8 x! N
plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])! C* }3 d4 B. h* V- z6 ]! r
% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。5 m( h; @+ x; ]' v
set (gca,'position',[0.1,0.1,1,1] );
2 `) c( N9 Y" f' T) v' n

; J. t  h/ J2 x( s0 w& t/ Y2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
. Y8 o4 ]7 N6 v+ m5 f# Q- U5 Z/ U我摸索出比较好的方法是如下的代码:
! O. d- L0 L! \8 w( {) ^0 t0 R8 e%%%%%%%%%%%%%%%%%%%%%
2 i* H- |) m8 Z4 X, t%plot your figure before1 D. E* _  I( X8 \9 k  e; S4 h
%%%%%%%%%%%%%%%%%%%%%* [' w- s0 ]) q  O
% figure resize
6 R& a  X. X6 G+ r' Jset(gcf,&#39osition',[100 100 260 220]);
& ~% l2 P$ E. ]set(gca,&#39osition',[.13 .17 .80 .74]);
4 s: M: t" c/ p: Y8 x- Nfigure_FontSize=8;3 g% {# M3 I! W* T# e% N- d
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');- X; f3 l- I3 Z8 f
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');9 T; q/ ], V( M8 K' s6 i4 x+ @
set(findobj('FontSize',10),'FontSize',figure_FontSize);. f: d, h/ `! U
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
* X- C( f8 C/ v) [. m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%3 n3 |5 y  O, u1 m% E! t# `) B
解释:
9 v1 ?! ^+ I2 s0 O  P' q4 u6 Cset(gcf,&#39osition',[100 100 260 220]);: D+ `" p7 J( P2 W3 `  [2 \
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
/ G' X8 v" Z' ~8 Z" ]% _4 {set(gca,&#39osition',[.13 .17 .80 .74]);4 [# \8 O! i" v2 y" k) f) h, U' I! e1 A
这句是设置xy轴在图片中占的比例,可能需要自己微调。: C$ ^+ e/ Y( q) t! J; B8 k0 i
figure_FontSize=8;& t+ I% V1 j) A, M
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');/ x: T5 d; e9 a1 j, q2 ~6 e  {
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
8 `5 }9 I6 ^8 H2 h! w, Vset(findobj('FontSize',10),'FontSize',figure_FontSize);
' O" A' P1 M/ j: n! j
4句是将字体大小改为8号字,在小图里很清晰- Q0 h5 w* f& ]* t& o$ i
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);+ {3 [  O9 h2 s. ]8 s' z3 A. ]
这句是将线宽改为2% p5 T% V8 k, Z3 x* N
3.设置坐标轴参数$ k' U' \' n  d
1axis,设置当前轴的坐标范围;
% w( X: v# L4 i$ B2 Z, M
2axes,用指定的特征创建一个新坐标轴;
+ @0 m4 Y) {. j0 x
3getset,查询或设置已有轴的各种特性;1 D* V% A- w6 G; A) o$ [
4gca,返回当前轴的句柄。
% w8 N2 c" k3 ~( [, ?9 M
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:/ o) x& ^4 ^( l& w! e* v5 B
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。: q) R' B# d; ], w
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
" b5 x4 C2 R) |& q+ h0 Eset
gca,’ytick’,[-0.3:0.1:1];
/ e; I, u# [7 d# ^; q  @
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
! h9 l2 n2 V  x! t+ g' g+ v$ j! q" k( @set(gca,’Xtick’,-pi:pi/2:pi);
2 q, P$ q, n* l4 M% k6 ~set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
3 k" X# P- D5 f$ M; v1 @Axis square
设置两坐标轴长度成相等。
: K3 P& ]1 {# bAxis equel
设置坐标轴标记间距相等;
; w$ x* l6 B" S2 x7 IAxis equel tight
;设置图形以紧缩方式显示。
% O* {& n8 T6 }# X6 ^+ p6 r6 r5
.图形窗口
8 O5 U' j7 d4 z; M+ \2 Gfigure(2);%
以第二个图形窗口作为当前图形输出的窗口;/ ^4 H. @1 z) v3 j9 R+ E7 H" e
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;: S9 b* r  b9 ^" S
colordef
颜色;%如whiteblack等,设置绘图背景颜色。8 N- R" i3 h, k: Q' m
6
.图形标注
# O* X9 |! c' ~Matlab
提供了几个函数用于图形的标注:
3 J+ U- w9 O+ @$ g
函数名功能描述
( `1 V# w; t) j7 vTitle
添加图形标题
  `3 Y" n5 T& b+ v4 ~Xlabel
xlabelzlabel添加XYZ轴标注2 o" g( `( c4 p! @2 z# ^/ F
Legend
在图形中添加图例2 Y) g6 V8 o: X/ W+ h
Text
在指定位置显示文本
/ Q* w& x! n9 T" F  F& e9 pGtext
使用鼠标将指定文本放在图形中的位置
4 C/ C2 z& o2 e, L* b
如下为添加标题,坐标轴标注实例:
( N3 z) l, o8 M: Q, ]>> t=0:i/100:i*2;
, F1 P- q. T7 j3 R9 u' Z  e4 p>> plot(t,sin(t));
( `: z, r4 t# y>> xlabel('t=0 to 2pi','Fontsize',16);& k/ Z, V6 q/ L  W! n+ h; q* u
>> ylabel('sin(t)','fontsize',16);
2 s, z* U* o0 n+ h; I" L: S4 p>> title('Value of the Sine from Zero to Two pi','fontsize',16)8 H/ o. }5 x- z4 X; l. B6 D; c
注:标注时:pi显示成希腊字母,alphabeta( g" g4 U1 |# W
在图形中添加标注与图例,如下:5 p! ]' g1 N. \. {3 s1 d
>> t=0:i/100:i*2;9 b: p9 R* J( g7 Y) x( y
>> plot(t,sin(t));5 A2 @6 d1 s4 N& I/ d
>> xlabel('t=0 to 2pi','Fontsize',16);) t( p/ I  f! T  {  T' r
>> ylabel('sin(t)','fontsize',16);
  ^+ D8 {' Z1 F>> title('Value of the Sine from Zero to Two pi','fontsize',16); K, S2 j  f! N5 n
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
% x' Z+ j  Z) B$ A>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)& Y: G' N6 @* `: w
>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)2 ]% P0 U. V9 |& H2 N" N) z
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。- P+ v; e/ f4 e: Z" E
>> H=legend('con','sin',0)
%绘制图例
2 k6 o; D0 y4 j* t1 d, K
  ~# {% I( t, s
, R) H  `4 I* V% c+ [/ ?. h8 |  v8 @& K$ N" F! `
改变坐标轴的显示位置* T% }% r) a- \7 H0 y" \" m' x
set(gca, 'XAxisLocation', 'top')! L. A& V' M* l2 S. d5 S
set(gca, 'YAxisLocation', 'left'). V% ~( s. |3 a7 |/ B3 p0 l7 ]
                    5 t/ y1 C8 p2 V2 z' M( \

( ]& L4 S9 O( J/ v3 I                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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