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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。" h7 Q, s5 Y2 e. }" O* g  U2 T; D
figure;
1 c' [7 @, T; `. Y5 S%设置坐标轴线宽,加边框,坐标字号7 S4 n4 z9 S, D+ `; P9 C
axes('linewidth',1, 'box', 'on', 'FontSize',16);

; }, e/ g) N: r$ Z5 \9 q- b%设置坐标轴label' T+ i" [5 h, }# `% \) b  M+ J
xlabel('
时间(s)','FontSize',16);; R7 G. q/ p" Z/ Q5 t3 u5 K! D
ylabel('
压力(pa)','FontSize',16);
; R. \- m& P( e! rgrid on;  n7 P+ d, o* g
hold on;
1 K$ J3 z7 [* W0 A' Rplot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
# D( j  B. x5 ]2 i
%设置坐标轴上下限
9 \: m, K4 M$ A, g3 Dxlim([0, 0.5]);
6 K& t4 q7 `7 P9 r4 h
ylim([5300000, 5800000]);
0 @' R  h" c! Z9 H7 A& Z: ]* n9 R0 O( H- F# s4 L4 S; N. i* O
MATLAB
操纵坐标轴! \2 G7 h% d$ B  y7 z  c0 ]9 e
axis off;        %
去掉坐标轴
9 i% s( B6 E! }1 W& l% a2 G1 caxis tight;                     %
紧坐标轴
! e) c  M& z& W" l- J4 ]axis equal;                     %
等比坐标轴
. L3 ]4 ]! i1 q+ L  V6 k: \5 Kaxis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 2 \( j7 ?" x) c2 U' J, J
& `7 C- x- j, K" H) k
% gca: gca, h=figure(...);
; ]9 e0 C% ^7 x' R) ~set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
6 j  B& j! r& Hset(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 3 z/ S5 ~1 C5 S, \
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号
; Z/ [* M4 G. \7 O  Bset(gca, 'XTick', []);                     %
清除X轴的记号点0 F, _9 ]9 D7 F+ j- z" k9 _
set(gca, 'XGrid','on');                    % X
轴的网格
# y0 a4 D1 C- [# W* oset(gca, 'XDir','reverse');                %
逆转X$ `" r" k, [0 F5 s
set(gca, 'XColor','red');                  % X
轴的颜色
+ s( H9 d- A- b' A% Z9 U7 y% z
2 b5 e. Z7 x! S" p( @9 ?+ o& w
' [, Q  _  N8 c. \' f, n  W& u

  @3 l  K/ ?6 R( F7 I4 ~8 C7 M& e[Matlab]图对象
. n" c6 v  I4 b7 x% R ! W2 M( ]. |, W8 l
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
% X: z, U) b# Z: O4 ^7 B& H/ Nscreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
9 \1 g6 t) }; Jfigure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。1 g9 Q4 C$ e; F# P& c; F' \  o
plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])  z& h, ?8 N( I6 a0 M* f
% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
- U) `9 l' h8 {. A  b7 |( Hset (gca,'position',[0.1,0.1,1,1] );
3 U: s6 m& \  s& m, _5 g& y# r
7 N+ E0 ]# m" @/ r# c- ~4 |1 ?- z& T
2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。2 m$ X& P3 N* r: V
我摸索出比较好的方法是如下的代码:' j! o4 N; L, C& z2 W
%%%%%%%%%%%%%%%%%%%%%- p$ u& c. e% n2 k! Z( ~) x! @
%plot your figure before$ P' n6 `# R2 X
%%%%%%%%%%%%%%%%%%%%%
; R& l% u& c# M3 S4 f, _% figure resize
" o' L, Y2 a. H8 f( Uset(gcf,&#39osition',[100 100 260 220]);! L0 H  B6 X3 V% X' h4 A
set(gca,&#39osition',[.13 .17 .80 .74]);% X2 d9 Z# \2 X: t0 O" \: m
figure_FontSize=8;: Q( {) @: V, @9 l5 c% Z, k
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');* ~9 K7 c$ C4 }% S6 t9 S9 R
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
1 B& H) e5 Y, W! o2 \0 q# |set(findobj('FontSize',10),'FontSize',figure_FontSize);1 x+ L5 A4 X' u8 i4 v+ M  v0 X
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
- J* R7 [/ f7 m9 Z; A
%%%%%%%%%%%%%%%%%%%%%%%%%%%%/ a/ A) c7 m4 u9 D% d- R1 A! Z$ n
解释:
  ^/ _6 p' F1 c3 I* H: z: wset(gcf,&#39osition',[100 100 260 220]);
" h6 G+ s" [& `& [; A6 o; J
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px& ^* D' \- P% A/ x) ^( J' Z6 B4 Y
set(gca,&#39osition',[.13 .17 .80 .74]);
  d$ b" s/ p+ m" J7 O( F, g, H
这句是设置xy轴在图片中占的比例,可能需要自己微调。' v. T: Z4 H8 ^+ \
figure_FontSize=8;: N3 @  _+ K7 L* v; E
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');0 ?& A. r7 t( w2 @' K0 o4 o
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');$ L9 w  _) b/ a: z! U) c+ V4 y# `
set(findobj('FontSize',10),'FontSize',figure_FontSize);
! C  h+ s6 Q. K% [9 w5 J- M- g
4句是将字体大小改为8号字,在小图里很清晰+ f% P: V+ w2 S* N
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
$ J+ u) W# P1 z1 H这句是将线宽改为2  X$ B: R) S% W, V$ s4 I5 c
3.设置坐标轴参数* C- r1 f. p$ [% r! h. w' R
1axis,设置当前轴的坐标范围;
* n, B* u2 a! t3 B5 x+ ~
2axes,用指定的特征创建一个新坐标轴;' r$ Y6 b$ h- q8 x5 T8 F+ I
3getset,查询或设置已有轴的各种特性;
  D1 _2 y' `0 i
4gca,返回当前轴的句柄。+ r& }1 S: e) R" k4 O: E+ P4 f
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
( D, ~% P% U  A3 T0 qaxis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
4 \- r- Q- w! n2 J1 {
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如/ y, Z( s+ _6 l. L) k9 t: p& {
set
gca,’ytick’,[-0.3:0.1:1];5 r2 t$ P* K- N
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:$ w8 l! F) M6 W. ]& b8 G" S
set(gca,’Xtick’,-pi:pi/2:pi);9 a9 G7 u3 H( J" H* _6 {+ T: B
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};, ~+ t+ B+ L7 y
Axis square
设置两坐标轴长度成相等。
' R* j( _: l) A- W+ jAxis equel
设置坐标轴标记间距相等;6 ]. I  L1 y9 A2 i' D. ?+ `
Axis equel tight
;设置图形以紧缩方式显示。8 j& ~3 f' `) T2 p
5
.图形窗口- v3 S. N" x: D2 ]5 K2 P9 U4 W
figure(2);%
以第二个图形窗口作为当前图形输出的窗口;
9 v1 V) O% A- y- ?. [subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;! S' D7 r' w" F+ W
colordef
颜色;%如whiteblack等,设置绘图背景颜色。
3 J2 e1 n/ @4 d) E7 n0 G& S- P+ B6
.图形标注- E2 l- C  r5 S! j; W1 F0 u5 {& n
Matlab
提供了几个函数用于图形的标注:
6 r1 [, Z: e* k2 D) \
函数名功能描述
8 P5 h4 |5 r  l* ~/ h0 Y8 wTitle
添加图形标题: S  [0 l( H& S* e5 e
Xlabel
xlabelzlabel添加XYZ轴标注3 |# N) J: N$ t7 z
Legend
在图形中添加图例
! t1 F2 I% M) J1 c0 V- M. FText
在指定位置显示文本
' z3 |" g, @7 k4 vGtext
使用鼠标将指定文本放在图形中的位置
4 T9 |$ i% m% e+ ~/ @
如下为添加标题,坐标轴标注实例:
: @' a4 H+ A( c  a& q, n>> t=0:i/100:i*2;
+ s. G+ ~7 n& b) v; w/ i4 `>> plot(t,sin(t));; J1 q4 A8 r/ I" D; Z9 Q
>> xlabel('t=0 to 2pi','Fontsize',16);- n( p* A/ w( g3 B) Y
>> ylabel('sin(t)','fontsize',16);
- m! i- Z0 y4 m' C  }* G>> title('Value of the Sine from Zero to Two pi','fontsize',16)! r* Y: e; u4 k5 o* D3 @( P
注:标注时:pi显示成希腊字母,alphabeta
, g+ X5 ^) n4 w4 e
在图形中添加标注与图例,如下:
3 l; ]! s5 O" e# h. k% a>> t=0:i/100:i*2;
8 u* H! y# l) Q>> plot(t,sin(t));
, _. W2 y) ?( b# G: x. J; c- ~>> xlabel('t=0 to 2pi','Fontsize',16);
3 g( Q3 u' ^  D) v# Y, c: L>> ylabel('sin(t)','fontsize',16);; U, j. l; R9 F0 {3 W5 a5 _
>> title('Value of the Sine from Zero to Two pi','fontsize',16)# U7 n  F8 b7 \( g  h. v
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)  J# f& E1 D/ k, a7 P0 M% e0 G
>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
4 Q; d( p; K9 F3 {% E>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)
) B$ _2 D4 U5 m4 }/ J>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。* Q- U6 x0 K5 m$ V- P9 G
>> H=legend('con','sin',0)
%绘制图例* s* S7 s: \6 q. N& w, b+ `# }2 m2 ~

: m" C  N- X! d5 X
( q' e, G/ L* ]4 X! P1 r3 c% p& ]4 Q- J; S, L
改变坐标轴的显示位置
$ ^: L7 x: s( z) m$ }set(gca, 'XAxisLocation', 'top')
- z& S5 Q$ |! Tset(gca, 'YAxisLocation', 'left')" s( ~. p% C1 v9 c) q
                    
' [. V* J# Z$ ^/ [- o, L: s' u& E- m' ^- b1 M( f( \
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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