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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
- u) Y- L) I$ K! mfigure;2 z' }2 p, m& M( d
%设置坐标轴线宽,加边框,坐标字号
+ S! A% J! S6 N( jaxes('linewidth',1, 'box', 'on', 'FontSize',16);
, n+ _5 A8 S5 m
%设置坐标轴label
0 M( Y& t9 ?5 Z  Yxlabel('
时间(s)','FontSize',16);
# q! S: h' X" fylabel('
压力(pa)','FontSize',16);
6 \* X0 U8 w! }grid on;* a" m% E/ w6 l. x+ E' ?
hold on;
8 L; b' J) V- p! Bplot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

: R5 P2 s% w9 I! \1 ]%设置坐标轴上下限# b$ ~( \& `  T5 w& v* ^
xlim([0, 0.5]);
1 q; J( m& `5 S; X5 }0 y
ylim([5300000, 5800000]);7 ^4 d3 Z6 u2 f; E$ N% y' O7 ~

5 T3 ~$ c# ~# F9 q* nMATLAB
操纵坐标轴
) q4 s& e% W! t7 _' V& ?axis off;        %
去掉坐标轴
" K( g7 K5 M' u7 ^axis tight;                     %
紧坐标轴
# r9 X7 u* ]; p0 f9 uaxis equal;                     %
等比坐标轴
3 |  F1 H: J, E7 v! paxis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 + x. g' v7 C5 }- I4 N4 k+ d: _+ l5 e

2 {5 ]) `9 |9 \% gca: gca, h=figure(...);
7 f# @8 t0 {& f8 |6 I& r" u0 zset(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围/ w8 z  ?5 G5 d) T. v
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点
, }4 G& h7 n7 ?% `& p5 jset(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号, |: i/ j' p( `8 q
set(gca, 'XTick', []);                     %
清除X轴的记号点
: m, u/ {$ l; a% z8 d- B/ Xset(gca, 'XGrid','on');                    % X
轴的网格" y8 O' [/ [) B: k
set(gca, 'XDir','reverse');                %
逆转X# C) Z3 Y! l6 M1 y* o/ G/ a
set(gca, 'XColor','red');                  % X
轴的颜色
  V8 X/ t1 }5 P0 S+ ]+ c* r0 f/ G6 U8 r

0 O* h/ ?6 Y( z: Q% `0 w1 p
9 ~3 ~: @4 q( U+ @
[Matlab]图对象% F4 k; H4 s% J( n

: I2 @3 j; z- \( `$ |$ ?. s首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
5 C9 A3 n( G  N% v# {0 Y/ \5 Escreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。& y0 {! L/ I* X! {6 K$ T( m3 k1 ^
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
; ~& d' j/ b$ L! o% q: F+ nplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])( l+ a6 x& f& j9 y# ]0 T7 p8 J
% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
( i8 G3 O5 _% h- [# Aset (gca,'position',[0.1,0.1,1,1] );

2 S9 K' g; W# D
* @! d% V. }; O( o$ Z2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
! K) }3 O3 Q$ t% [6 |我摸索出比较好的方法是如下的代码:( ^. x2 Y9 B) X2 R+ Z
%%%%%%%%%%%%%%%%%%%%%
8 F/ {0 s0 a4 [/ }%plot your figure before
! o" j6 r) K! E# h0 p%%%%%%%%%%%%%%%%%%%%%
+ `# r+ y5 m: Q8 v9 q; K4 f6 N- }% figure resize
# n& B* P# Y: lset(gcf,&#39osition',[100 100 260 220]);
& {9 V9 s: Y2 M8 D* s& k8 ^set(gca,&#39osition',[.13 .17 .80 .74]);
! b* ~# k# R# S7 e  O! m4 V, u; J+ Efigure_FontSize=8;1 A& p0 A8 l# e  B) Y- F
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
  \2 y+ o) {6 x$ g0 @8 I, fset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');* W* g5 `  K# \8 p0 v: X
set(findobj('FontSize',10),'FontSize',figure_FontSize);- d- H1 f& O+ a' K
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

$ G( C, V* l* L. w9 v" J%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 x+ A* e  [; C* S
解释:. c/ z% z2 A7 w! s, T
set(gcf,&#39osition',[100 100 260 220]);
7 ?( h' _0 P! A! h
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px( K: F9 g9 k: F8 Y  @  h
set(gca,&#39osition',[.13 .17 .80 .74]);, {2 v( u% t6 a# U8 s4 @, @
这句是设置xy轴在图片中占的比例,可能需要自己微调。# Y1 u2 x: V' J) y8 r, K, Y+ T
figure_FontSize=8;# M) B* a' H$ |7 m. R7 a
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');( V) {2 j; s7 F- h1 ?5 O* @
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
( l# ^) o- E# m; H+ lset(findobj('FontSize',10),'FontSize',figure_FontSize);

* R% ?# l' e* i7 J4句是将字体大小改为8号字,在小图里很清晰; `0 l0 V! n8 a/ p
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
" J" I* w" x3 A' j1 _# L" c! V这句是将线宽改为2' i+ W; @$ l5 G' \7 C- h
3.设置坐标轴参数" e3 F- [# p* h, b4 P3 D- C- l" X
1axis,设置当前轴的坐标范围;
. b& I: n' @, Z# J# Z$ L
2axes,用指定的特征创建一个新坐标轴;* n3 m3 [; m/ {  n- ~
3getset,查询或设置已有轴的各种特性;
% c  d. w; C+ {
4gca,返回当前轴的句柄。* u* @- h* b7 n+ ^' s. o5 Q: k! l. ]6 j
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
6 v' L: k" e0 a* J; ]! H) e& Qaxis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
' L# `2 |0 r. F7 L; U5 A
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如: j+ P  [1 h9 C: S3 M9 t' |
set
gca,’ytick’,[-0.3:0.1:1];
. g) ^3 O. V8 s9 J. }
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
$ m+ ?# X6 `+ }* jset(gca,’Xtick’,-pi:pi/2:pi);: J# D! ~" A  _6 m
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};: S- G. d" X3 _( Z
Axis square
设置两坐标轴长度成相等。+ `+ [' O+ C- ~: n2 @3 p! j
Axis equel
设置坐标轴标记间距相等;% a$ s4 s1 o1 l( i% X
Axis equel tight
;设置图形以紧缩方式显示。
  y0 _: m% L0 J) b% P: p+ G5
.图形窗口
$ d, ?6 h+ t- [; F$ t6 P* Pfigure(2);%
以第二个图形窗口作为当前图形输出的窗口;
- W( _0 p5 u* T" v. U* Gsubplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;
! @- H& s( \  m' x; }colordef
颜色;%如whiteblack等,设置绘图背景颜色。4 D$ j# j$ U- h. [1 @2 T
6
.图形标注; ~6 Y) `% @$ I& z  u/ y  `! r8 t
Matlab
提供了几个函数用于图形的标注:
( w/ _  t) L: `! h) U* A) Y; Y/ S
函数名功能描述
& W4 e) b; F/ X8 q7 K1 @. j# F5 lTitle
添加图形标题& c! c9 C, Q0 e/ h
Xlabel
xlabelzlabel添加XYZ轴标注
' H" g0 z& b* k( k3 ]8 T5 S3 tLegend
在图形中添加图例
1 L6 ], l: G9 u4 O8 WText
在指定位置显示文本
, \" U- X) p4 m5 ?: [; J' tGtext
使用鼠标将指定文本放在图形中的位置
( F1 [% L( j0 a/ Q( x& Q
如下为添加标题,坐标轴标注实例:
* r1 ]7 n7 |( N8 s+ S+ L+ O' ?>> t=0:i/100:i*2;# L' p! i! {/ F/ ~& G
>> plot(t,sin(t));8 y, s/ F) l. v
>> xlabel('t=0 to 2pi','Fontsize',16);
& O# ^) D) x6 V3 J>> ylabel('sin(t)','fontsize',16);1 O% O6 M1 e9 R( Z8 |) B
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
8 ^6 B! {5 c6 Y- [, S. o$ F7 j  r
注:标注时:pi显示成希腊字母,alphabeta
, G* _- Q  p; K2 G6 p* K
在图形中添加标注与图例,如下:! s% o* Y, A# N1 T2 S. X" J
>> t=0:i/100:i*2;6 J# o- b! O: h( O4 Q+ g( w; O
>> plot(t,sin(t));( {9 C$ ~4 @1 i% J( s
>> xlabel('t=0 to 2pi','Fontsize',16);& S- C& U/ y% z4 W9 q# r" q
>> ylabel('sin(t)','fontsize',16);9 J; v  S0 ^/ ^! ~
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
: A' D& q" @- W$ o>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
, _0 a8 P3 |$ F3 D( R  O7 n  W>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
5 K) Y( Y0 d" ^0 g# V3 z>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)3 \  ]7 C! N2 u' i/ j! d( M
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。2 Z# T  q  I" Y5 F6 q
>> H=legend('con','sin',0)
%绘制图例
0 c' [; U" F$ e4 b  D6 w- \
' V! Q8 f2 e& X$ p5 e2 f
8 g8 W& k! b1 U: p' K0 ]) ~* ~; _4 i3 E3 P1 V3 O  r" i: ~* t
改变坐标轴的显示位置  r3 Q" w4 Q8 s$ t5 A5 {
set(gca, 'XAxisLocation', 'top')
  t. b0 R% g8 Y/ g) L/ Dset(gca, 'YAxisLocation', 'left')0 a2 D: }9 V5 Z1 C9 J* ^
                    
; p' D/ q9 w  U: g' q; j
1 z" V" |9 A- E$ t! Y4 R& ?# i                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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