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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
  s( d/ {" D% A5 P- s: Z6 A! i+ \) Dfigure;
/ Y( i" u4 |# x2 i( z2 o%设置坐标轴线宽,加边框,坐标字号
; M7 l: \( \3 q$ maxes('linewidth',1, 'box', 'on', 'FontSize',16);
+ Q. }. V( e; O9 O4 Q( C8 G9 X: E
%设置坐标轴label$ W6 `& s' W1 `5 q( C/ }# H) H
xlabel('
时间(s)','FontSize',16);
# {* J6 v: d& U# rylabel('
压力(pa)','FontSize',16);
& D! g' }3 [6 @4 @8 P, lgrid on;
  A( J1 l& x, E% K( r+ q. }hold on;
- \* p& d9 F& k/ o5 A' L6 @4 @plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

& K* [/ K2 p- @3 w+ Q0 i%设置坐标轴上下限
4 p7 D7 ]3 k1 ?+ Q* B8 W. yxlim([0, 0.5]);

" r' T* `" y# \& U% M& E  Hylim([5300000, 5800000]);
, {2 r& {2 t5 b/ M  k/ p
& q# B3 {& q- E! qMATLAB
操纵坐标轴
4 f# q; _; _) u, z# q& T" Naxis off;        %
去掉坐标轴/ S5 G# z/ i% F
axis tight;                     %
紧坐标轴
+ M' u& k/ u5 ^4 z: P! r3 H- Xaxis equal;                     %
等比坐标轴2 E/ ]9 q5 V3 ~( H( X0 L3 `& U& o4 ~
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 2 U. G' J9 a* T" X  j7 ?# T2 L

% P: F) S0 w. ?' Z% gca: gca, h=figure(...);; m" e+ h/ e9 j* d' q8 p
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
; e* T. Z) Z7 w& bset(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 0 S& N! e0 F* ]; s% _
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号% f4 Q( k  Y, t- ^/ g% j6 [4 I
set(gca, 'XTick', []);                     %
清除X轴的记号点1 C  j! k) e7 Q# b
set(gca, 'XGrid','on');                    % X
轴的网格- I0 Z) s5 z" P9 }3 p3 q* b6 B
set(gca, 'XDir','reverse');                %
逆转X
4 q) [. y' T8 H+ aset(gca, 'XColor','red');                  % X
轴的颜色
  o# Y7 d1 G* p7 I% O3 M# Q5 ?1 E) Z3 n$ z& a: f7 d3 m7 I8 I

3 `+ [8 I$ i4 K: p
! k* v+ D" I5 `, |8 P
[Matlab]图对象) r- Q( {7 l; C8 L) }. ]  c
& [+ [, P4 A) }  r9 ]+ {+ T6 q
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie! x. o8 I' N! y: i% R
screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。' z( F# Q7 b2 N+ F3 R) I3 p, L; p
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
' t, j$ h! g( A" x4 rplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
. p' T8 ]" O' ^% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。# v- L# t9 u2 l! D' Y* W3 r# ]! X
set (gca,'position',[0.1,0.1,1,1] );

! E0 G+ u6 x/ m; X1 }2 G
" S! T) i1 K% U/ ?- j3 k: w2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
' c. G# R! J" L! t6 v) _我摸索出比较好的方法是如下的代码:
7 X/ W3 u& i5 w6 D%%%%%%%%%%%%%%%%%%%%%
2 B. j( W! V; b+ z' {& i. t) S) B%plot your figure before' q/ s0 @- N4 t9 H' w
%%%%%%%%%%%%%%%%%%%%%( l( N5 m7 P& p* f( x
% figure resize
# K3 @5 J# `( R9 k% A7 v- Vset(gcf,&#39osition',[100 100 260 220]);4 K/ J6 V$ {+ F* C* n+ Y0 m
set(gca,&#39osition',[.13 .17 .80 .74]);! H; n9 E" G9 T5 N  l: ~
figure_FontSize=8;; ?) o, m+ n  a/ t7 E
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');1 [- V/ I# C& R# H
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');2 h; o8 a" P: k8 E
set(findobj('FontSize',10),'FontSize',figure_FontSize);. E! p3 }( c1 q$ D( ~% [4 W
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
$ ^( Q6 s5 w5 k* b5 w
%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 U% w% w; }0 i" a
解释:
1 Y8 o5 q/ D. g# J0 q/ Rset(gcf,&#39osition',[100 100 260 220]);
/ u. [1 U" C8 W
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
+ x: g$ {% @" ^set(gca,&#39osition',[.13 .17 .80 .74]);
% o9 }/ U8 L, g4 S
这句是设置xy轴在图片中占的比例,可能需要自己微调。
5 X6 o3 j: p* l9 D) s# Y. r* _" Bfigure_FontSize=8;2 z3 j% m, A4 P6 Z
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');+ m8 k1 b& c! H! @4 A2 o; N. ?
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');) _* I$ L0 H: V) b' |$ F
set(findobj('FontSize',10),'FontSize',figure_FontSize);

& I7 U# c; w, B" j: }2 N% E6 l4句是将字体大小改为8号字,在小图里很清晰
1 h4 I) Y& v$ iset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
6 M8 ]" Y0 D2 K8 c, e这句是将线宽改为2
. |1 k7 n& Q2 `3.设置坐标轴参数& _- M$ q, ^5 A, v5 T7 c) w
1axis,设置当前轴的坐标范围;; E: h. p  \8 Q1 [; b0 L
2axes,用指定的特征创建一个新坐标轴;) b) O$ J2 J. E  Q' D
3getset,查询或设置已有轴的各种特性;& i* U; K- F. o( k0 j! L
4gca,返回当前轴的句柄。2 I# ?* J  g# A# @9 ?  d
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
* w4 o7 a4 `; a6 A8 S# Laxis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
9 _3 G& a  n8 Z3 ?5 ?' j3 d
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
  W& p5 t6 ~9 u4 w: Jset
gca,’ytick’,[-0.3:0.1:1];. k0 n' ~8 s& D" j' A. ~% X
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
2 A; p7 z! \" J7 A7 g1 U* sset(gca,’Xtick’,-pi:pi/2:pi);
( J" `4 N3 B1 V: g. Aset(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
; p: U, E$ t- q' U; G. UAxis square
设置两坐标轴长度成相等。
+ k; g7 z# X  y  c( [Axis equel
设置坐标轴标记间距相等;3 f+ Q" J8 A4 c( \6 B1 z
Axis equel tight
;设置图形以紧缩方式显示。; E1 h2 N8 V/ f. j& d' u6 U! E) C
5
.图形窗口' z) b" }# h7 E, l; P
figure(2);%
以第二个图形窗口作为当前图形输出的窗口;0 @6 S( l" h3 |* h/ z/ T; T
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;. }6 J3 g- `$ x& S
colordef
颜色;%如whiteblack等,设置绘图背景颜色。
! z& n7 J  w6 o# ]5 ~, l6
.图形标注7 y9 R. p' M: m' J8 \" ~& g- ^3 a4 \. h; P
Matlab
提供了几个函数用于图形的标注:
5 n, C) K, q1 V1 i- N. C
函数名功能描述
& i2 Z2 i; F  f& _Title
添加图形标题0 _' d+ y! j7 D9 u* e. S" B
Xlabel
xlabelzlabel添加XYZ轴标注
# H4 H" Z9 b) g) L" FLegend
在图形中添加图例
- t2 Q4 Y1 n  G! xText
在指定位置显示文本
, M2 q' W- T& w8 j" Q7 A9 GGtext
使用鼠标将指定文本放在图形中的位置! q8 b. E$ r  y4 V+ _
如下为添加标题,坐标轴标注实例:( [- l( ~, D1 C% W4 q
>> t=0:i/100:i*2;: x, l+ e# R# ~6 n3 Q
>> plot(t,sin(t));
5 k' z. C# ~* o: O>> xlabel('t=0 to 2pi','Fontsize',16);
+ O/ H! D. X. y5 O6 s# F' K>> ylabel('sin(t)','fontsize',16);8 |3 f! n$ _: w* o2 I& x% P
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
' u5 P6 x: c* P  D8 _* W) L. Q
注:标注时:pi显示成希腊字母,alphabeta
5 Z, R9 R! n1 g! Q( ?! p+ u! L' p! X8 [
在图形中添加标注与图例,如下:
& F# f! d  q0 a- s/ _>> t=0:i/100:i*2;/ P8 b# D5 T9 F3 X# s
>> plot(t,sin(t));+ U: K! v" y: |3 T; H8 B/ v
>> xlabel('t=0 to 2pi','Fontsize',16);! h$ A0 M& D6 s+ Z
>> ylabel('sin(t)','fontsize',16);
1 h- Z/ e& {& j9 B: t; A/ n>> title('Value of the Sine from Zero to Two pi','fontsize',16)
/ s: R+ Y  L$ r" Z9 h>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)# w  X2 H0 P3 z: u. z  k; a2 G! B: b
>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
6 w0 Y0 h1 ?0 c! ]7 D" V>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)
2 w, ^4 T2 E0 J# @' h7 F, k. T>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
3 l/ n& w; K0 E% I5 ~>> H=legend('con','sin',0)
%绘制图例- E) J+ D! |! ?% q

- z/ N  E0 V9 f. f. p, w0 A
& q% p0 h$ a2 x9 C
- _; p! K% }# Q7 _8 x5 l( Z, ~改变坐标轴的显示位置) d+ ^$ ~$ a' `$ v7 z' Z4 v
set(gca, 'XAxisLocation', 'top')
: m. j2 t! H: H0 Lset(gca, 'YAxisLocation', 'left')( o1 `$ g% w  ^1 H- e% C
                    - N" z/ M+ E3 {0 z/ f  _

; b& ]8 H! `. B/ O+ J- C" R                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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