【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
0 f( r* m" ~/ J- a4 x9 e! \8 xfigure;
+ i% C$ c2 q" F& _, e9 v* U+ j%设置坐标轴线宽,加边框,坐标字号
  n/ y+ G: }$ G2 m, e4 Z' [  Taxes('linewidth',1, 'box', 'on', 'FontSize',16);
: h8 z! H1 r& H8 r
%设置坐标轴label9 D0 X9 }8 }7 f' ]5 R6 U( ~1 ]
xlabel('
时间(s)','FontSize',16);9 |/ t( l  |: @
ylabel('
压力(pa)','FontSize',16);. v9 ]& D  H4 ~$ B8 p/ r
grid on;
" h4 s$ O% `! i" s) e0 Z* Hhold on;, a' Y$ @3 F1 T+ F8 a  z
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

! f) o' w; ~. z( |4 n%设置坐标轴上下限
  w0 e! D6 S' s" X9 [xlim([0, 0.5]);

0 d9 i% x2 N9 qylim([5300000, 5800000]);
" E& S4 ^8 c$ j0 e4 T. o, Q& ]
2 [6 H- Y$ @* ~  M$ S" \MATLAB
操纵坐标轴
- K: ?8 o3 j8 d( }6 ^# \/ R, [( jaxis off;        %
去掉坐标轴
! {+ X; d  F- ~, Waxis tight;                     %
紧坐标轴1 b; }9 O( q& q3 A2 R
axis equal;                     %
等比坐标轴
+ k" A+ ?3 W  N& q, Q1 W1 Q- uaxis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
) F) F( L0 b  v5 U
0 \1 u# \3 j7 p$ u- I% gca: gca, h=figure(...);
8 O9 a  b, d8 p3 q  Q; `; T( Oset(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
: c; U2 E- F5 ]0 c; x0 v# Tset(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 . \* H5 T7 f1 M. x+ C. M4 K8 c# `
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号% l) o; A1 A6 u/ A* t9 m
set(gca, 'XTick', []);                     %
清除X轴的记号点  b+ _9 ^  D' o0 [
set(gca, 'XGrid','on');                    % X
轴的网格9 V- E) @/ k  c! K- h* l4 X
set(gca, 'XDir','reverse');                %
逆转X! p3 }8 K& [4 r' B$ ]; g' Y5 s
set(gca, 'XColor','red');                  % X
轴的颜色4 x  B- C6 I( K1 N0 s

; H/ k: T8 J# t6 w
) f1 z, w& s3 H! p" K

2 |7 u# I# M, M7 o5 d5 \+ q[Matlab]图对象) u' h4 h6 x2 i- ^  u+ B

7 Z$ j; v; Z9 G; p首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
# Y6 s5 R% R: U$ {( x- O" [screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
& _1 z" O6 ]! p7 Z# j7 Afigure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
# {/ [" h$ }8 hplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
/ Y6 Q. t0 `; l: B& v% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
; ?" v# U0 t' O4 ~; Rset (gca,'position',[0.1,0.1,1,1] );
! ~5 f3 [) u% r2 L* ~! ~! C

/ y; S" [9 }9 q3 u+ [2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
" F' }0 ]; b: M! ^我摸索出比较好的方法是如下的代码:
$ u3 v  k% G  s1 T2 E2 C%%%%%%%%%%%%%%%%%%%%%
! p" W5 ^  r1 `' m% N2 j%plot your figure before
& O. {' `( y- u0 Z) M, T% h%%%%%%%%%%%%%%%%%%%%%
) Y8 ?. ~1 T6 s/ t7 O* u% figure resize
( H+ q" U3 W7 m7 n# xset(gcf,&#39osition',[100 100 260 220]);
# ~, i  n5 N$ M* z4 Wset(gca,&#39osition',[.13 .17 .80 .74]);
6 z0 [  d. M2 i6 j1 cfigure_FontSize=8;& e/ Q' w+ R4 v- ^2 v) V9 N, H
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');7 _3 L8 v4 i" T2 c
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');" k1 u  ]) W+ d& s7 m% v; `
set(findobj('FontSize',10),'FontSize',figure_FontSize);
9 u2 I% P2 l# Eset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
  y/ z) o9 S, f1 F6 m
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' [4 l1 @3 \- b. p6 a' h0 W5 n解释:
3 q" S0 z6 j' ?( w# Y2 wset(gcf,&#39osition',[100 100 260 220]);9 ~3 c9 ]1 S& e& c, y2 l3 `
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
, j$ p* j7 e& q) a- cset(gca,&#39osition',[.13 .17 .80 .74]);
/ S$ A* F2 c4 ^, O! \, V" A
这句是设置xy轴在图片中占的比例,可能需要自己微调。
- ?3 Q3 y% M9 s+ ?figure_FontSize=8;- H# X" I- A2 @
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');, o3 H6 z% A9 W7 f" e# ~! m
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
, u6 P/ K- K7 g% Bset(findobj('FontSize',10),'FontSize',figure_FontSize);
1 H4 H  |- C& T/ |" R$ V# [
4句是将字体大小改为8号字,在小图里很清晰
+ D" l' S9 v/ ]- P8 |set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);5 b; B, I1 F! E/ Y! J- O
这句是将线宽改为2$ x8 I7 m2 k2 A% W3 }
3.设置坐标轴参数
- U! G) V% p1 N# _4 y4 {1 t
1axis,设置当前轴的坐标范围;
# l/ e; G- H% n6 d5 q9 ]- ~
2axes,用指定的特征创建一个新坐标轴;
+ v, b8 o2 Y- H8 Q
3getset,查询或设置已有轴的各种特性;/ C- J: F- ~: j2 D) v0 k# @
4gca,返回当前轴的句柄。9 I- d4 R4 w) e8 I/ |$ P1 M7 n& g9 N
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
) z7 L/ X( K3 r; o/ i( S/ q  Y; xaxis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
. Z  P  |/ T* d& Y8 s, M. a
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如) `) |) ^' W' e5 J/ T0 y7 e% N: O
set
gca,’ytick’,[-0.3:0.1:1];
9 e5 ]- P9 W/ U/ i/ {% Y0 N
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:) K. e* g0 J* |  I
set(gca,’Xtick’,-pi:pi/2:pi);$ c+ A; c3 j. b6 w
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};; |  ^. B$ P2 X( _8 U
Axis square
设置两坐标轴长度成相等。
8 x9 P: P5 a" l) PAxis equel
设置坐标轴标记间距相等;
& I0 ?+ {+ b1 lAxis equel tight
;设置图形以紧缩方式显示。, u* v) h8 F8 p, q% |' H  n1 E8 v* ^
5
.图形窗口
' @+ j" p* F" Y1 I9 ]6 h6 p# I- s5 x  @figure(2);%
以第二个图形窗口作为当前图形输出的窗口;
! W, X$ |5 T. p/ y. g- J6 L3 p6 W% ^subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;5 u  r$ \7 ^- @, `& c% T6 Z+ G
colordef
颜色;%如whiteblack等,设置绘图背景颜色。
8 d6 Z, V2 f; V! Z6 H0 j6
.图形标注! V7 G/ b4 o% ^' t
Matlab
提供了几个函数用于图形的标注:
! m: z1 t( r: ?* h5 s( ^
函数名功能描述) q8 x; s# i5 v% E  d8 T
Title
添加图形标题. S7 a1 I- i+ f! j
Xlabel
xlabelzlabel添加XYZ轴标注1 g/ M; Z/ n. T
Legend
在图形中添加图例
5 b; s- g  b, \Text
在指定位置显示文本
! N9 t. a, G3 xGtext
使用鼠标将指定文本放在图形中的位置, |/ o& [6 i- M+ }! G; G& G
如下为添加标题,坐标轴标注实例:" B. a+ c8 `2 Y
>> t=0:i/100:i*2;
2 ]& p- b# v2 U7 i+ Z>> plot(t,sin(t));& g6 Y+ c: A( n) L
>> xlabel('t=0 to 2pi','Fontsize',16);! B) ?# c( C+ M; j; P) s
>> ylabel('sin(t)','fontsize',16);1 n/ j- {  n6 e) |
>> title('Value of the Sine from Zero to Two pi','fontsize',16)) f% a$ C2 e3 c+ z8 r# `. X9 f# F
注:标注时:pi显示成希腊字母,alphabeta4 Y. N) y8 O. y" U1 j% A
在图形中添加标注与图例,如下:
! ^5 Z6 ^- o( ?, k6 D, w' J& n, X>> t=0:i/100:i*2;
* ]( Q- \2 \1 t7 f5 r>> plot(t,sin(t));
4 E7 R( F8 j6 ^: N>> xlabel('t=0 to 2pi','Fontsize',16);
2 I/ N0 B4 Q0 ]3 a- ?( J1 M>> ylabel('sin(t)','fontsize',16);  i+ k6 E8 h3 W! V& _2 S/ U. Z
>> title('Value of the Sine from Zero to Two pi','fontsize',16)& I" n9 w0 U" j
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)6 L" L+ I2 v0 U: G
>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
# n4 j- X: M  \>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)- `4 Z: w4 o1 n( v3 \5 F
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
/ z  w! E. Q6 Q* u1 [4 U>> H=legend('con','sin',0)
%绘制图例
; c0 k% p: D5 O7 l ; K. X' G7 q, y, z8 m* k! `

/ G0 v: g- X  E
' U% [0 O( W5 }3 Z$ ?# ~! z; a- M改变坐标轴的显示位置$ o1 n# d9 W9 F; }
set(gca, 'XAxisLocation', 'top')
4 e. @2 @: P) _: [& @0 Dset(gca, 'YAxisLocation', 'left')
, `7 h. x" a8 Z- p* |) n. m                    ; j# R0 a6 }8 @. d4 H, [5 X
& m) C# X/ {) O
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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