【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
) }6 X$ h9 r) K- R2 f- R" Jfigure;+ b$ d6 c- C. O3 H8 l
%设置坐标轴线宽,加边框,坐标字号+ G& x- w/ b, c9 g( `, Z
axes('linewidth',1, 'box', 'on', 'FontSize',16);

, I: d! M9 |8 ?  u%设置坐标轴label
4 _- H/ j% h$ q/ B) C. Exlabel('
时间(s)','FontSize',16);
. ^3 U8 \" n( \) y# bylabel('
压力(pa)','FontSize',16);
, c* E: e* J, j2 ]2 O) ?grid on;2 N6 s4 E) T0 x4 H: ]% O
hold on;
* O" O0 h5 R2 f, q: R! splot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
( p9 C$ C  H+ x! x/ z' \0 ^
%设置坐标轴上下限2 H0 q, b; h! X# x' D
xlim([0, 0.5]);
( Z* K) k& _9 v% ~- _# c1 Q& g
ylim([5300000, 5800000]);
4 {9 T! J6 S2 W8 R4 U3 ~. @0 [" C! X7 d. w
MATLAB
操纵坐标轴, D, r! H8 X7 A+ k
axis off;        %
去掉坐标轴* y0 ]4 R( g) D; L' ?( v" S$ F
axis tight;                     %
紧坐标轴: O4 O# O2 {, a7 A
axis equal;                     %
等比坐标轴/ A% T" i  F6 T0 W' {+ r7 {' b
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
; f' e+ p0 t1 M% D7 t1 o; o  f
# q0 y! W' E9 I5 K) F% gca: gca, h=figure(...);4 |1 p, F" U7 }
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围1 n, W  w4 z  N8 V/ r" T7 {
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 & N1 I5 ]4 ?( K2 H3 c& @
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号
7 o: f1 g& b" tset(gca, 'XTick', []);                     %
清除X轴的记号点. i. Y9 Y# p% |9 q+ R  s
set(gca, 'XGrid','on');                    % X
轴的网格
! Z8 a! m1 {6 N. @' w- U% s- Vset(gca, 'XDir','reverse');                %
逆转X
9 X+ `7 h- p5 L( l4 Hset(gca, 'XColor','red');                  % X
轴的颜色
. F$ |/ ]$ f0 ~# D/ a: n0 t4 I0 g; `+ C& x9 }+ E+ ?# s
% a1 U& S+ K2 }8 i- S; m* e; C

$ w' f0 u) |9 Q3 Y3 }4 r[Matlab]图对象
6 K) |5 A) j6 h# J* c) _ 0 k( Y* b2 o: Z, L
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie+ x2 e* Y$ i# t
screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
6 @7 W5 ?) T) f% a$ V3 F& v6 X; Cfigure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
, k# e1 g* y3 i4 D  r7 S. [plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
6 L0 b$ Z- E$ G0 f1 M% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
6 l# Q  E. l; J4 N  z2 ^; q: u5 ?set (gca,'position',[0.1,0.1,1,1] );
0 k- m" g! C4 S6 q6 ]2 m$ A$ ]
1 y8 j- U, W$ ~
2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
2 [5 U7 N5 i! \- c我摸索出比较好的方法是如下的代码:. t/ s3 ?5 A5 K8 O8 A  Z( H
%%%%%%%%%%%%%%%%%%%%%: K, s0 t4 U1 M. y; x) p
%plot your figure before  k% d( s+ S5 {9 ]0 j7 T
%%%%%%%%%%%%%%%%%%%%%$ S8 ^. L9 }8 X& ]: K: ~
% figure resize$ |* w" l- D6 U- N% J) d5 T
set(gcf,&#39osition',[100 100 260 220]);
1 {2 w/ d. [4 M! W+ e9 Zset(gca,&#39osition',[.13 .17 .80 .74]);( x2 A$ I" r8 ]" l  `# M7 p
figure_FontSize=8;' W. s# K  F5 q
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');) h! V8 m0 g9 H+ e& L) h3 q
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');1 j/ m9 L4 G! {6 L! z. r
set(findobj('FontSize',10),'FontSize',figure_FontSize);
0 m9 L3 S" ?6 E) h- ?- |set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

' `# L) @# A$ p7 Q) S5 s* q/ D3 s3 C%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1 j; x4 ]% }/ R3 K( n解释:9 m( W1 c3 X% Y: y5 [3 a
set(gcf,&#39osition',[100 100 260 220]);
* c# O% r" u" F* e
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
4 r1 K2 y6 G0 o* Y+ P& pset(gca,&#39osition',[.13 .17 .80 .74]);
) W  R0 K; L) v/ R7 L
这句是设置xy轴在图片中占的比例,可能需要自己微调。6 v* S# f$ d: V( d8 Q# A  H
figure_FontSize=8;6 b# z) F- I* ]
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
- a! D9 k1 g! I/ h- }% Gset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
8 E$ w  V) r* O& w/ G- Xset(findobj('FontSize',10),'FontSize',figure_FontSize);

# [5 x. D# M. Q, P8 y4句是将字体大小改为8号字,在小图里很清晰
7 S* M2 @- F! F7 ^- _set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);0 p4 |. i) M4 s' m
这句是将线宽改为2
  l4 O, J5 z2 g; O5 L' j3.设置坐标轴参数
2 J7 V9 q" z* Q; t" W/ ~" {  v. A
1axis,设置当前轴的坐标范围;
* s/ ^3 K" @0 q/ n$ e( H$ y
2axes,用指定的特征创建一个新坐标轴;% `3 D! u( b* }1 ^
3getset,查询或设置已有轴的各种特性;
. B0 E5 J$ I$ U5 n& s* t' G% a
4gca,返回当前轴的句柄。
: q) \6 }4 k. V4 a/ o" N
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
/ R2 y! J- A4 I, Y2 caxis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
) h/ i  V0 Y' C/ y; ]- ~1 o% n
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
  S7 N  e) |( w, m( M& {& wset
gca,’ytick’,[-0.3:0.1:1];
8 o) h2 c& f6 Z( l5 C% z+ Y5 B
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
. x% T- [8 M4 Y4 a5 eset(gca,’Xtick’,-pi:pi/2:pi);
1 n4 T% }2 T( o  @' F/ Jset(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};) m$ }/ k. N% L( H
Axis square
设置两坐标轴长度成相等。4 l: |" v* c1 O. I
Axis equel
设置坐标轴标记间距相等;) `& P6 [* Y. o( Y5 c3 e+ l! J
Axis equel tight
;设置图形以紧缩方式显示。
4 {; F9 q& p" s) Q# ~5
.图形窗口
; e3 M+ P5 V( a) h) t! Ffigure(2);%
以第二个图形窗口作为当前图形输出的窗口;
! t, g# m/ I* w$ Z& psubplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;% k7 w. s. f) y( T
colordef
颜色;%如whiteblack等,设置绘图背景颜色。/ ~0 [1 a' Y! b4 h
6
.图形标注1 n4 U. h7 U, P2 \! Q& E! w- a$ z
Matlab
提供了几个函数用于图形的标注:7 C! C: f. Q& A9 N* S
函数名功能描述
* _4 }6 x3 F3 ]Title
添加图形标题7 t6 p* C3 F1 t1 O7 s
Xlabel
xlabelzlabel添加XYZ轴标注
7 S1 l5 S. X, m/ m, w9 BLegend
在图形中添加图例9 f4 z- v% _0 z2 D8 u8 r6 _1 }$ \
Text
在指定位置显示文本2 h8 S5 U. v5 Z
Gtext
使用鼠标将指定文本放在图形中的位置
- |; e1 r+ o: E* q4 x
如下为添加标题,坐标轴标注实例:9 q! I& F5 a, K4 u8 M
>> t=0:i/100:i*2;- t" t- b# F& M5 W2 T" f+ \
>> plot(t,sin(t));
3 J9 [- }( g: d5 b5 c6 [>> xlabel('t=0 to 2pi','Fontsize',16);/ f% l5 v% I0 t' Q6 ?8 A9 d
>> ylabel('sin(t)','fontsize',16);! Z' l% ^7 k- D4 K9 s/ |$ ?
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
- c! X5 A' n6 j2 ?9 E
注:标注时:pi显示成希腊字母,alphabeta8 v0 J# K0 g# x4 I6 f
在图形中添加标注与图例,如下:9 q% f" j& s* ?: [
>> t=0:i/100:i*2;5 ~* q/ N7 `5 V" E# }
>> plot(t,sin(t));
6 X4 F* w3 ~7 Y6 S, N+ H, G* z>> xlabel('t=0 to 2pi','Fontsize',16);2 a6 m3 q$ u4 M/ [$ J2 ~
>> ylabel('sin(t)','fontsize',16);
) j+ o0 b' G9 B" W" H6 ?>> title('Value of the Sine from Zero to Two pi','fontsize',16)
" x  e: U  ^, R4 R/ P# E7 }>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
5 s! }4 \% g! u; I. M" t; G>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
; R0 Q8 r+ L: Y% x0 u8 b>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)" K- ?9 W( J% [/ |& J/ i
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
; }$ @6 I; G# A+ _& j& x# d& B0 q>> H=legend('con','sin',0)
%绘制图例  i' D0 U9 N7 S+ C' b

2 m1 @# Y9 v2 r- Y; {! P+ r, w* Z" H4 d# G( I# F5 z

- }6 o3 w8 \8 W) w: d  }9 i0 Y改变坐标轴的显示位置
" F1 |9 f7 t$ p# W$ Kset(gca, 'XAxisLocation', 'top')) c( f& T5 K* H
set(gca, 'YAxisLocation', 'left')
1 ?% q5 I1 I' u1 w8 V                    
3 m' e! b3 z9 g, x4 r* `; X* J& E4 h2 p% k
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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