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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。! ?# p4 Q2 a2 ~2 k1 Y, A' y4 O2 s
figure;
9 T2 `. Y; O' J, f. r# U* e/ y# B%设置坐标轴线宽,加边框,坐标字号
4 `/ z; u) s8 `$ f& Vaxes('linewidth',1, 'box', 'on', 'FontSize',16);
8 Q: d$ k1 |& Q5 C6 i; n9 N
%设置坐标轴label( Q6 R* ?3 B& Z" {  r4 L
xlabel('
时间(s)','FontSize',16);7 S: _3 _1 z0 j2 S
ylabel('
压力(pa)','FontSize',16);
/ B$ p9 S; J5 Q. N* o% X: Ugrid on;
2 `. W) M8 y$ v, X9 m. ]hold on;# `% J, ]; k% d7 u1 k
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

, S# n- F. U' I5 [' B0 y) L%设置坐标轴上下限
. ~4 j# F: Y. I, Z1 d& I0 N, Nxlim([0, 0.5]);
7 d9 M7 f  u" q  X
ylim([5300000, 5800000]);3 S, a$ V) a0 D  M, `) j+ h

' h5 f8 C& _$ k: kMATLAB
操纵坐标轴% q& K- y/ l. X/ X) D
axis off;        %
去掉坐标轴
. Y4 }0 n, D2 c, d" L- E: Naxis tight;                     %
紧坐标轴
$ v0 m, Z  j0 S+ Gaxis equal;                     %
等比坐标轴# k) c  R- O. {; u
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 7 v( H: J( E1 L% b& v1 I
1 O; V. A5 q3 [. F/ o& \
% gca: gca, h=figure(...);& ~2 ?9 ?0 s6 d  l
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
+ ~/ P# j$ X1 e; }set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 / I" G9 Q" o9 o6 j# }% ]- s
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号8 o/ Z; x; ?3 U" Q; H
set(gca, 'XTick', []);                     %
清除X轴的记号点
/ @& n. |6 y! _0 y+ L/ [8 T3 i6 Lset(gca, 'XGrid','on');                    % X
轴的网格
" F4 F/ D, M; I; q% f+ j: o) a& ~set(gca, 'XDir','reverse');                %
逆转X% W" M$ [5 Z+ |) S! z
set(gca, 'XColor','red');                  % X
轴的颜色
6 C3 ^" e' a! m* h
5 I' k" V/ t9 F* @' c
2 f  Q3 z/ T# ^3 @& E

7 }2 y' L2 c# Q; m! S2 K! C6 P[Matlab]图对象
. s0 w& }2 K  H* N   p" G& G8 M; L. m5 g( W. g
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
  u! h9 J6 }3 p7 L2 M$ f9 j2 h: G' Hscreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。. I% a. X" ]& l& c; L/ T' P1 }2 P
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
! x8 M+ ]# J- V  Gplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
" F8 n, `) K% k; e2 d, A+ `% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。4 ?' Z8 {. i3 b
set (gca,'position',[0.1,0.1,1,1] );

8 |4 t, c9 _5 U: L3 J, S
* U. c  G* a3 r! Q4 b0 v  O) V2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。" F0 N' M- `3 s' B" p0 C
我摸索出比较好的方法是如下的代码:+ W9 `9 U8 k* [5 w, i
%%%%%%%%%%%%%%%%%%%%%  o( f; W/ t$ }: o* D, U
%plot your figure before
  G, r1 \6 O& V; C%%%%%%%%%%%%%%%%%%%%%
: _) {  B( i* j9 J/ b' H2 R) s% figure resize
# w# |2 V: Z& ^$ W/ Rset(gcf,&#39osition',[100 100 260 220]);
& f( w* p+ _. i! Aset(gca,&#39osition',[.13 .17 .80 .74]);
. G/ R9 k, G1 F4 |figure_FontSize=8;
' l# ~$ u4 |( d3 F9 Hset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
; G* C& \8 c( }! Q. h( r4 m: Yset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
  O9 }! N& K# I+ @/ ?set(findobj('FontSize',10),'FontSize',figure_FontSize);% q6 X2 A3 |  V, U; N0 D
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
& X( f6 P& Z/ J3 O- u7 P$ X
%%%%%%%%%%%%%%%%%%%%%%%%%%%%( I: |  I- U) h9 `$ A! r2 h1 }# k- G; G
解释:' d' a4 U8 R# w) y1 d
set(gcf,&#39osition',[100 100 260 220]);1 i7 s: }" `3 e, i2 c6 q5 C3 {
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px# Y9 M# A$ a# D5 r! `/ m6 f
set(gca,&#39osition',[.13 .17 .80 .74]);
& `6 F5 T* {8 m0 w8 h- S& g
这句是设置xy轴在图片中占的比例,可能需要自己微调。
/ |3 m4 J+ f  C  N( O  G2 N: hfigure_FontSize=8;
9 E$ N9 q0 \- ^* O3 f& q- S6 jset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');% M! t8 l5 h# \- r# o  }% h& q
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
# F6 g5 g7 k& E3 M$ I. h1 Pset(findobj('FontSize',10),'FontSize',figure_FontSize);

4 W6 A1 L& o8 h4句是将字体大小改为8号字,在小图里很清晰- f  I! i, H( c8 ]  ?: C4 J! O5 m- m% D
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
$ T# g% ?3 b& ^9 a, Q' R这句是将线宽改为27 T8 y/ X# |, ^4 H
3.设置坐标轴参数: B5 u$ Z1 |) x& |4 u4 d
1axis,设置当前轴的坐标范围;
- m' o  {* _! a, |1 k% [( D
2axes,用指定的特征创建一个新坐标轴;
- Y5 Z' `6 a- L$ y
3getset,查询或设置已有轴的各种特性;( e  k0 P7 c/ B0 {
4gca,返回当前轴的句柄。) o* ~  v; s% q# w4 b7 ?
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:( o: ]) c, A6 Y' h& r
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
( l* ?3 o7 |2 r: [( Y5 t
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如8 P! N% n: v  i2 a# }) z6 b% G% `
set
gca,’ytick’,[-0.3:0.1:1];
1 d  k( G8 s. m+ u, T! s$ u7 o
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
+ ~+ M7 U! K  dset(gca,’Xtick’,-pi:pi/2:pi);
- G0 s' Y* @6 _7 N8 |, c% Kset(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
/ J5 y% _; M- GAxis square
设置两坐标轴长度成相等。) s( g2 ?/ P% r7 E& g7 v4 ^7 {
Axis equel
设置坐标轴标记间距相等;) e  ?* d5 H; H2 P" ]# k
Axis equel tight
;设置图形以紧缩方式显示。4 N/ p  d$ U1 N- ]2 \
5
.图形窗口
* q0 E* b3 o' {; ?9 J7 y/ n/ Mfigure(2);%
以第二个图形窗口作为当前图形输出的窗口;4 E- E$ m: u0 z8 x& y! @9 G8 B( ^
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;
5 C6 e* F. {* }. o$ I8 G$ I4 A$ v! K* v" Gcolordef
颜色;%如whiteblack等,设置绘图背景颜色。
: z/ R: {! j7 E, {* u: y6
.图形标注
. W6 _, P5 G' |* i7 z0 ZMatlab
提供了几个函数用于图形的标注:9 d* ~$ v) n8 E5 [
函数名功能描述
# u- ^* X4 S% b# d# E) u' CTitle
添加图形标题2 l- T# a: W1 Z6 b5 d4 ~9 f
Xlabel
xlabelzlabel添加XYZ轴标注/ g, ^! s" r8 q7 F5 i, h- J
Legend
在图形中添加图例
6 j( H- r* g, i. P7 P5 KText
在指定位置显示文本2 c$ S, v8 k1 l
Gtext
使用鼠标将指定文本放在图形中的位置
7 W; i1 f/ x9 @* t) j2 G) B, J% M
如下为添加标题,坐标轴标注实例:. O, X$ r: d  Z! V
>> t=0:i/100:i*2;
8 W5 @: a  ~. t& N- {>> plot(t,sin(t));
' A' N- {( x7 Z5 y8 }% J5 k>> xlabel('t=0 to 2pi','Fontsize',16);
- y$ i: z- _% h>> ylabel('sin(t)','fontsize',16);$ W5 Q, n5 }/ g+ B
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
/ O8 m. J3 k# y9 k* {9 r
注:标注时:pi显示成希腊字母,alphabeta
* ?2 e! w* Z; j
在图形中添加标注与图例,如下:  F( a0 Y9 ]6 a- m. u. \2 p
>> t=0:i/100:i*2;
3 v; m0 G7 U/ {$ A>> plot(t,sin(t));
4 {/ L: @# p; U; y0 e3 X! s. `9 X>> xlabel('t=0 to 2pi','Fontsize',16);
" n  I+ t4 A* R' P' _2 h>> ylabel('sin(t)','fontsize',16);
/ u% V: T* `! ~; O>> title('Value of the Sine from Zero to Two pi','fontsize',16)  ?0 m" R+ o" A: P& x6 M1 {
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)7 `. F6 Q: p0 ^) @( ]
>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
$ z0 Z& G- S9 r. j3 a>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)) P9 ?2 m% H# `. F8 r# x
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。5 S, B$ D) w: g' g  S$ p7 X$ q0 r
>> H=legend('con','sin',0)
%绘制图例* f6 S* C3 ^+ J6 e
6 n9 F( c1 ~7 n2 k' c; Z" |

# G: e: E6 v$ O  p# m2 x# q5 x2 @: |9 @
改变坐标轴的显示位置
0 s% V) e8 m+ h$ xset(gca, 'XAxisLocation', 'top')$ K* y) |- ~3 Y& G
set(gca, 'YAxisLocation', 'left')
3 z) [0 I% k" C! k- n0 R0 \                    & ^" N0 y2 {) K* c
# b2 z( v" H0 L* \. ]; H4 A
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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