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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。+ z) |% n# [# e: R: k
figure;7 e4 [5 z1 e1 X: z6 d
%设置坐标轴线宽,加边框,坐标字号
; l, y! X% [+ r, x6 H  @3 X, uaxes('linewidth',1, 'box', 'on', 'FontSize',16);

& ]& w& t1 s! `, O  x3 r%设置坐标轴label. l% @, T. _$ W5 q- }. ?. m
xlabel('
时间(s)','FontSize',16);8 G( {. i4 U7 Y; _
ylabel('
压力(pa)','FontSize',16);0 W$ t3 n, C' Q9 A  ~
grid on;2 c7 `, @/ ?/ X* c
hold on;& O8 `# h9 Z, G8 g
plot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);

; ]5 d( ]- q3 t' f+ X%设置坐标轴上下限- h* V* v( Q# O( j  a
xlim([0, 0.5]);
! s; L8 P8 K) V" |, ]3 _
ylim([5300000, 5800000]);
2 u/ S7 t5 y7 |% s8 E! ?
: K" ^2 U3 S1 \MATLAB
操纵坐标轴
- A4 f( ?$ F: v, M* t+ raxis off;        %
去掉坐标轴+ X9 C- X6 K' |7 D. j, r7 ?3 a5 e
axis tight;                     %
紧坐标轴' p" ]" V0 [& @1 M# R# x; t
axis equal;                     %
等比坐标轴; U9 g4 Y) {8 E" a9 p' {$ f
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围   G: E2 A- e1 W# D

+ i# ?3 @6 j3 t7 h* _$ A5 k% gca: gca, h=figure(...);9 \1 v- z) o# c: i- Z( D3 d
set(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围9 }! w/ S" g/ `6 @3 {1 e8 j* P/ h
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 ) I' T1 q$ C2 `* g# `( D
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号
7 F, I$ \* _; u" K' S4 c. Tset(gca, 'XTick', []);                     %
清除X轴的记号点7 u1 d! x6 q1 y- I) y
set(gca, 'XGrid','on');                    % X
轴的网格
2 x8 [1 O' k+ m$ h2 k: Cset(gca, 'XDir','reverse');                %
逆转X! Q' w7 V% B0 O" q6 ~; Q4 l
set(gca, 'XColor','red');                  % X
轴的颜色
0 V5 l, ~: g- E8 {1 _. z7 ^- V2 u& f
+ t: v3 h3 W3 a- d- E$ F+ Z

, x1 Y4 N: n% U- B8 ~% T[Matlab]图对象
8 w: g2 C& w: N' s0 e* y& M+ s; a + A4 |/ J$ J, n) M2 {
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
: C. R; M+ t# T* jscreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。+ d6 L8 O! X1 f7 f. V) I
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。- ~9 m7 ?4 A) T$ G* D
plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])3 |; i. u; B; p- H& X9 u; A& ]
% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。; d: V  \5 U, @: s; F& L
set (gca,'position',[0.1,0.1,1,1] );
1 P3 U/ ?; }; _# t* z' {6 t
; L5 q' n1 ]) m# \% X- l
2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。! P  ^+ R& B- V
我摸索出比较好的方法是如下的代码:" c  D' Z7 N* F: w5 n, F; |1 g5 B
%%%%%%%%%%%%%%%%%%%%%* [. ?* D9 y3 a/ p& M
%plot your figure before
% |; z* @9 q$ u%%%%%%%%%%%%%%%%%%%%%: D; U7 D% H$ R! Y& C$ v5 j9 o
% figure resize. n$ i, R% I, d8 g3 h
set(gcf,&#39osition',[100 100 260 220]);$ l3 C* p* |9 ~: l% \
set(gca,&#39osition',[.13 .17 .80 .74]);& J6 x- j  q$ X0 ?3 t
figure_FontSize=8;
$ ?: u, [$ u8 C# ]# |! K2 Q( Fset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
; i1 L7 ^' q  p# @set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
0 l, P- S6 y# K+ pset(findobj('FontSize',10),'FontSize',figure_FontSize);
" G8 Q' J3 _7 ?  ]! L: p1 Iset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
' z" K6 F  B/ _. q# Q% `
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7 B5 X6 ^# y% y) u  J1 \9 m5 j. k解释:( Z  y! G" [/ s" h
set(gcf,&#39osition',[100 100 260 220]);
0 P  y2 b- U% V  z1 s6 `8 c
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
  d5 K; ?3 T- X4 @7 |set(gca,&#39osition',[.13 .17 .80 .74]);: W' d+ f" H3 P) D$ {" @
这句是设置xy轴在图片中占的比例,可能需要自己微调。
1 d, M) g: p  n6 q. hfigure_FontSize=8;
% p+ I6 a2 S2 e( `. d+ H4 S: `set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');1 `$ o. d" }1 O- h/ S+ U
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
; F6 ?' A- u  j& J0 Rset(findobj('FontSize',10),'FontSize',figure_FontSize);
% r% r, l2 j0 u% C9 m5 u
4句是将字体大小改为8号字,在小图里很清晰& ]- L" T# X. |! B& ~
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);! T& E! ~/ U7 b3 S; K
这句是将线宽改为2. A( u# w) e. ~
3.设置坐标轴参数
$ @, x$ q# R  W* E- H: c5 p
1axis,设置当前轴的坐标范围;5 x" g0 ^. h) ]9 t6 p6 c, k
2axes,用指定的特征创建一个新坐标轴;9 [+ Z7 G7 @0 ^! d6 P
3getset,查询或设置已有轴的各种特性;
8 s1 G, N! K7 n' Q
4gca,返回当前轴的句柄。2 L- j! {# T6 ^/ a# S/ D  o% j
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
0 P( p2 H8 s# n2 c2 Uaxis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。% y$ c4 S  t# x2 ?1 b0 J' M
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如/ g' X: y. J: g8 m; T
set
gca,’ytick’,[-0.3:0.1:1];8 H# i  A+ x& T2 e- C. ~4 k
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
8 u- A: X) `8 P# E3 ~9 n' lset(gca,’Xtick’,-pi:pi/2:pi);, v+ \5 U1 Z8 e0 Z3 B) r8 l
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};  P0 g, _5 C* g% F1 [, V5 z8 S
Axis square
设置两坐标轴长度成相等。
8 S) O& G& f" a7 \Axis equel
设置坐标轴标记间距相等;
9 ?5 `8 ?6 Q6 J5 ?Axis equel tight
;设置图形以紧缩方式显示。& i4 m* I6 k# p& g
5
.图形窗口
" A5 q+ L2 y( z  D( l" ?4 ~5 t' Vfigure(2);%
以第二个图形窗口作为当前图形输出的窗口;  n$ o% h' w' Q2 a
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;: a1 m# q( z- F  m3 K! L
colordef
颜色;%如whiteblack等,设置绘图背景颜色。
2 f5 m" Q* B1 ?6
.图形标注
4 d" ^9 X" E3 E( vMatlab
提供了几个函数用于图形的标注:
" B8 p* K4 V+ x- J: b: N
函数名功能描述
6 o# |8 B& E( W! w9 g  I" E. }Title
添加图形标题% u; C5 m1 b3 w6 N$ [
Xlabel
xlabelzlabel添加XYZ轴标注+ p  k% p9 U. o8 q/ m2 N
Legend
在图形中添加图例
4 w+ {- e% {' C" NText
在指定位置显示文本7 F# h* e& _  E" d0 u  W
Gtext
使用鼠标将指定文本放在图形中的位置
! x( a& h1 s2 Y1 p! x- a
如下为添加标题,坐标轴标注实例:
* d' E( t# e$ s* X  Z. s% j! K, g>> t=0:i/100:i*2;
- {4 T+ ^* n0 {  s1 E6 o5 Q# F, b>> plot(t,sin(t));" L0 e( v& Y4 }
>> xlabel('t=0 to 2pi','Fontsize',16);" [9 L" k5 l5 S( C
>> ylabel('sin(t)','fontsize',16);
, ~. G% _% Q6 p# M>> title('Value of the Sine from Zero to Two pi','fontsize',16)
; t% f- q- S' T4 c: j
注:标注时:pi显示成希腊字母,alphabeta4 c& C( y$ ^# Q' S) H
在图形中添加标注与图例,如下:
9 p) G! M; y! ?, R" o& m>> t=0:i/100:i*2;0 j* g+ Z  U/ ^: J
>> plot(t,sin(t));& V7 Z& y$ }4 B! n+ w3 a
>> xlabel('t=0 to 2pi','Fontsize',16);
* P% u1 s% t4 E1 ?5 Q6 ~- r5 H- l>> ylabel('sin(t)','fontsize',16);
( m6 c  w4 g" P3 E) n3 M# T8 ~( a>> title('Value of the Sine from Zero to Two pi','fontsize',16)" ^; M- T9 M! [
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
9 P$ F* A% _; e% l2 y/ w5 P( D>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
, x/ J/ S) l4 Q+ t& P/ h9 _# u>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)* \& p/ M+ C. Q1 Q8 w0 D! v' y
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。( j2 o6 h0 n. f: y2 `
>> H=legend('con','sin',0)
%绘制图例
+ N, }* w, D9 P9 r 6 o1 k  O, O& M0 m( ~& X# K' Y

2 [* S0 @7 Z  T5 X+ c/ T8 `, ]5 a/ I' F
改变坐标轴的显示位置: u+ G# Z+ i  B  H5 ~! }/ y
set(gca, 'XAxisLocation', 'top')/ d0 r) Y5 E2 z9 {, D: V# v
set(gca, 'YAxisLocation', 'left')
- e1 Q( e& T, a+ X4 q                    
2 r; Z; ^3 Z- n
: h9 O& V% R8 V, ?6 x" t6 s! b- i                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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