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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。: M: N8 w9 _) t- g" \
figure;8 c* }! o( ~' L8 z: }3 w% n1 Z0 J. a
%设置坐标轴线宽,加边框,坐标字号
; S( g" Y/ F% b! [4 c% n5 Qaxes('linewidth',1, 'box', 'on', 'FontSize',16);
6 \- y" R! T4 v5 O$ ?. E1 [
%设置坐标轴label  ^& O8 y8 t# [
xlabel('
时间(s)','FontSize',16);
6 W! `- y6 b! g% O, _, _& W0 Eylabel('
压力(pa)','FontSize',16);
( Y/ `+ ?8 @, S$ R* e' ]grid on;
% T0 l9 {5 ?1 c! `' yhold on;4 i1 h9 f! W: d- e& W; B2 t6 X! I
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
5 d- X1 P: z. Y! r, y' Y
%设置坐标轴上下限
$ u* r6 F: H0 A2 b: oxlim([0, 0.5]);
7 n6 F! t2 D% |( r3 n: E
ylim([5300000, 5800000]);8 P; f' {8 D7 e8 F. w
6 V% C2 t3 ^# I0 q4 C
MATLAB
操纵坐标轴4 {) _" j* `* h8 U
axis off;        %
去掉坐标轴2 }% m! A- m+ H
axis tight;                     %
紧坐标轴
8 ]. F8 }0 }8 f$ gaxis equal;                     %
等比坐标轴
8 R1 `+ E+ C3 w+ @# j5 T2 [4 k1 ]axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
! w" w* Y0 |9 \$ r
; ?: s" ]- u1 D( ]1 u% gca: gca, h=figure(...);, [3 L5 ^% k  k) g* a3 i7 N2 Z0 x
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围& Z& s) u/ H+ I
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点
8 Y; E+ p" j8 g7 F; k0 y2 u( m, {set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号! z" z8 [! T# I0 M  Y% |& L
set(gca, 'XTick', []);                     %
清除X轴的记号点
; g. c9 e- L; _set(gca, 'XGrid','on');                    % X
轴的网格
% p0 o* z$ L3 P* E) g& l- s. fset(gca, 'XDir','reverse');                %
逆转X
$ k+ W/ T4 x/ }9 y6 d' h: ]set(gca, 'XColor','red');                  % X
轴的颜色
. |: w1 }; z$ N' C: S6 s( t
  p3 ^) T& A+ X7 J- d
/ L" g. r6 @3 C  D  i
- u  g" P2 Y3 _( j
[Matlab]图对象
0 P3 c' Y4 i4 Q/ x( |$ X% ^
1 d% L4 q; S! \首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
) R) H' t- N" H$ D1 n9 Rscreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。" a; P3 z- U2 }+ T8 h8 o
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
$ j! l% x% n# n9 H# lplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])0 I' p0 c+ J7 s, Y
% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
. p$ y2 _% `4 V4 v# E3 zset (gca,'position',[0.1,0.1,1,1] );

4 c% p# j  o, |& T. X# H 1 D( `( }' W! s, B7 N
2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。6 [* V6 A* B. ~9 }
我摸索出比较好的方法是如下的代码:
+ n# Q$ }8 M8 E  w/ c8 x%%%%%%%%%%%%%%%%%%%%%
% v" W( e- P: a8 d* `% L- G1 g  w%plot your figure before
; x0 j  g2 O3 Y. d" T%%%%%%%%%%%%%%%%%%%%%
4 t& N3 y1 Y8 _: ^! m* O+ |) x% figure resize
* U, R$ K0 Z; @. f8 h7 ?2 [set(gcf,&#39osition',[100 100 260 220]);
0 B3 A2 C0 s* M- ?1 H: yset(gca,&#39osition',[.13 .17 .80 .74]);
- i: Y# R# |2 K7 N! y. s6 pfigure_FontSize=8;
& p/ F/ [2 Q! Q, ^8 ]. S3 Fset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');2 B+ \8 Q. K; c* k( w8 H; V
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');% F5 }: h; c" R) U: {
set(findobj('FontSize',10),'FontSize',figure_FontSize);+ ~  D. K& l: s& z/ G* g
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

0 F  f4 w" j3 o% A; E( X%%%%%%%%%%%%%%%%%%%%%%%%%%%%0 }/ }+ T8 w% ]
解释:9 `5 s! N( _8 a# X. t- \
set(gcf,&#39osition',[100 100 260 220]);7 u: D' A% P. N, a
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
4 e/ f, A4 U5 W) l* y$ Pset(gca,&#39osition',[.13 .17 .80 .74]);8 S( U) N9 O% v4 ~0 K
这句是设置xy轴在图片中占的比例,可能需要自己微调。: `% e" A0 `5 Z8 M9 H/ w
figure_FontSize=8;+ a5 N3 j" r  O  ]) i) I0 |9 O( q, ~! `
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
: }) G9 \2 j. o/ |3 g. nset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');4 L& A$ u, p' X! X; k3 b
set(findobj('FontSize',10),'FontSize',figure_FontSize);

: n1 h" @9 C# m5 Z& u9 Q3 p9 C# O6 g4句是将字体大小改为8号字,在小图里很清晰
1 C/ U! E+ V0 U4 t7 Y! U2 Vset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
( ?2 f- w& A) \6 r& G这句是将线宽改为2
' @6 Z5 q# H& ~" z# q! u3.设置坐标轴参数
% a3 {; n4 L( O2 s
1axis,设置当前轴的坐标范围;
0 V: \1 S2 L; R0 M, ^1 W6 a: c
2axes,用指定的特征创建一个新坐标轴;1 N6 F$ J- g* A" M% T
3getset,查询或设置已有轴的各种特性;& G- j" H" @5 y6 ^
4gca,返回当前轴的句柄。& |% v: F1 Q# i+ e0 V
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:6 q' V" b  ~5 T5 k* v3 p
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
! K+ s1 O3 F7 i: _' D
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如! Z5 Y' F1 W! e1 h2 i; g7 i- s- {
set
gca,’ytick’,[-0.3:0.1:1];
# M% |4 r: ], I
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
" y# U' ~. s) H/ Fset(gca,’Xtick’,-pi:pi/2:pi);
) C7 |  \5 X; |8 B5 V$ P8 f9 }, \set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};6 [9 b0 Z5 V. w  C5 K
Axis square
设置两坐标轴长度成相等。" Q0 G- j: o- e8 `
Axis equel
设置坐标轴标记间距相等;
8 q% n1 [" X" Q# {) x7 e5 fAxis equel tight
;设置图形以紧缩方式显示。2 p$ e- |& h3 d" t* T6 o% t
5
.图形窗口
& A! `( x# |4 h: x; l- qfigure(2);%
以第二个图形窗口作为当前图形输出的窗口;
1 K$ b- ^( G# B& V% E) n) V$ hsubplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;
5 N: B5 V; }0 O# {' t6 U5 _6 Jcolordef
颜色;%如whiteblack等,设置绘图背景颜色。7 h5 R5 k) r8 j( f& |: U1 }! I: A
6
.图形标注6 f! \9 t8 v: s! D* w3 H
Matlab
提供了几个函数用于图形的标注:
2 i8 e% H) p5 t
函数名功能描述2 j/ f- V9 P5 k" P
Title
添加图形标题( z! v! S7 k/ T8 Z( o# e8 J  }+ `
Xlabel
xlabelzlabel添加XYZ轴标注
2 X  ?$ A) b7 H! b$ k6 p* LLegend
在图形中添加图例" z5 D" Z4 i( X+ k
Text
在指定位置显示文本8 \( G' E. |/ H' d  g/ ?
Gtext
使用鼠标将指定文本放在图形中的位置
/ w& F9 p0 B8 c+ y
如下为添加标题,坐标轴标注实例:' N+ F  ?" T! ?& I- r5 @
>> t=0:i/100:i*2;
2 H: W' R; W4 D5 D3 h, P; I>> plot(t,sin(t));" z2 V3 @2 V0 q5 K' V" J! q1 Q9 ^1 D
>> xlabel('t=0 to 2pi','Fontsize',16);
* `9 M, }! [: v>> ylabel('sin(t)','fontsize',16);
$ L; {& K4 Z! j6 u. `>> title('Value of the Sine from Zero to Two pi','fontsize',16)
4 G3 r  B1 i9 s) o# J4 y. O
注:标注时:pi显示成希腊字母,alphabeta( W: ]( L% r* i5 J- {
在图形中添加标注与图例,如下:
- x  V( V, b) W. z>> t=0:i/100:i*2;
4 g' Q/ S# ?5 C9 M5 d5 z  I! L6 j>> plot(t,sin(t));
" ?* B0 t, J+ @' X6 c>> xlabel('t=0 to 2pi','Fontsize',16);6 r5 s1 c6 P9 B! w! ]8 J- k: j
>> ylabel('sin(t)','fontsize',16);
- G+ }$ M# k% W3 u>> title('Value of the Sine from Zero to Two pi','fontsize',16)
6 Z1 v/ D9 @8 g>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
7 g, Y6 B# c3 A  C- L>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
. {2 d* n- {  z: P' s- @% O3 q>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)) C1 j! }& P; h# ^8 R1 V
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
" U! `# |. c- G6 W2 P( M# q7 X2 x2 i6 U>> H=legend('con','sin',0)
%绘制图例; r* `6 Y8 y6 n' G
+ m/ L# e1 A! F0 l* {3 Q
( b( K: O% n+ T1 B" [& n
' R) e( E( Z7 F  w
改变坐标轴的显示位置
3 E+ L9 \' q5 X% _: Z! [' Cset(gca, 'XAxisLocation', 'top')
; c; j8 C  [% f3 t1 X0 V8 ?set(gca, 'YAxisLocation', 'left')9 i+ w" R( Q  M* k, [
                    2 R8 {! Q6 f6 @& E  L6 y  \0 T
" j9 c8 ~+ H0 }# G' G/ K2 ]$ h
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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