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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
: k6 S: K* N( _$ q& a  r% b9 \figure;, D  K& t; y) ^2 ~, f
%设置坐标轴线宽,加边框,坐标字号2 ~& c3 |& T6 m) n3 o/ x
axes('linewidth',1, 'box', 'on', 'FontSize',16);

! |- h3 w9 f1 @' H# R%设置坐标轴label; H$ L: k) r/ H
xlabel('
时间(s)','FontSize',16);6 i/ p) N+ W: P: f
ylabel('
压力(pa)','FontSize',16);' I8 `! L/ |! S/ j
grid on;
: W; j) H- G$ G/ xhold on;
4 l- j  V# [$ C9 V1 N; o9 j5 k4 Dplot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
: E* i: ?0 {& g, c3 U& v: t* V1 K
%设置坐标轴上下限; u3 h/ N. _9 j! \
xlim([0, 0.5]);

2 p0 @* e7 {9 L: zylim([5300000, 5800000]);
, b$ ?; R" V% p0 C7 J
, Y- A4 N5 E4 R  g8 X1 F6 u! g& zMATLAB
操纵坐标轴
+ d3 I2 F  v' e' j8 q5 V  ^axis off;        %
去掉坐标轴% c9 X! [' R/ v  X5 v
axis tight;                     %
紧坐标轴0 s& i3 n) L$ b% q, ?
axis equal;                     %
等比坐标轴5 l4 D- E8 y/ T
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围 ) r* s, h8 W1 Q7 ~- E6 B; P8 J

! h( O: `# I5 \2 l4 Y0 Z$ L5 f% gca: gca, h=figure(...);
! i& E+ i3 s8 L6 _+ Lset(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围9 M* M8 e! L6 `" }1 y5 `
set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 5 }$ k0 h9 C+ z0 T% `
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号. Z2 s) t6 ?6 Q; |. M) ]1 W% F
set(gca, 'XTick', []);                     %
清除X轴的记号点
% q& m" X! h7 w. g7 F9 s5 Y6 W- X6 Jset(gca, 'XGrid','on');                    % X
轴的网格" J$ H- ~6 {  J! f9 g
set(gca, 'XDir','reverse');                %
逆转X
3 s: D0 s+ {# Q0 x: l8 z% Cset(gca, 'XColor','red');                  % X
轴的颜色
) ?# |! R2 c) O/ S) v% z5 r. w. J/ e* F0 M; D, \0 o
8 c' d3 d$ ?' Z# d& A* m7 X
" {& E5 u0 Y. |, H9 C9 v1 x, b. @
[Matlab]图对象! E: |) Q  D; a

6 Z3 V8 T# O9 m首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie6 j" C( r3 h3 t7 D) F( G
screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。" B# C$ x( V; q( {% d* S: W( d4 `9 I
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
8 N3 y% M, P9 ?, f, dplot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
  s. d& L8 G2 w9 U% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。# R% ^- V8 q, ~- K
set (gca,'position',[0.1,0.1,1,1] );
- z3 O: x, G# K  Q' t* ?- f
- z, c- B5 j. u) S
2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。, V, u) T+ d, t! O4 Y6 v- j4 B
我摸索出比较好的方法是如下的代码:$ ^; E" A; o' j
%%%%%%%%%%%%%%%%%%%%%
1 v) g4 p  c; g; A2 Y%plot your figure before
; l  L. q0 N* {- ]' T, l%%%%%%%%%%%%%%%%%%%%%
% C" i  _& I5 A1 S, ~' F% figure resize
, ~& ^2 W& d% t2 w1 nset(gcf,&#39osition',[100 100 260 220]);
- k- H) h1 h( n5 f# p/ Kset(gca,&#39osition',[.13 .17 .80 .74]);
, H, N$ Y& f% M, |* i. Ofigure_FontSize=8;
; s7 s. \! `( E6 t: L. u. |set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
; `: ~1 B# `/ n+ Oset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');8 C" T" _0 F, v& }; K5 W+ {4 @
set(findobj('FontSize',10),'FontSize',figure_FontSize);" j! {* Y/ I( m, \
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

0 l+ Q- P' Z) X%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ _. Z' [6 C0 g6 f+ \2 q, ]
解释:% P* F8 l- }* q% N
set(gcf,&#39osition',[100 100 260 220]);
1 E" }0 `& @) N# m6 t* z* q
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px5 R3 y8 H$ ]* G9 F% N: s
set(gca,&#39osition',[.13 .17 .80 .74]);' o# p- Z% c; G0 U! @1 n2 c& [4 e, k
这句是设置xy轴在图片中占的比例,可能需要自己微调。& Y% e5 d' a5 X
figure_FontSize=8;
) k+ F- X, B$ @* e0 B5 X$ cset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');/ ~4 p/ G* P1 {
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
$ y. C; b+ h/ _2 J% j8 uset(findobj('FontSize',10),'FontSize',figure_FontSize);
- j/ ?2 c  a! l" [. s: j( R2 f
4句是将字体大小改为8号字,在小图里很清晰- S/ Y, o& `+ u# |9 r
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
: `( N, l% T: b, b( X6 P这句是将线宽改为2& U$ G& s5 w; v$ {* s, q6 N9 I# N9 T7 p
3.设置坐标轴参数
4 R& p, S0 o4 O( v
1axis,设置当前轴的坐标范围;
6 |7 }9 p% t0 X' I& ]- n
2axes,用指定的特征创建一个新坐标轴;. _! h$ a% E, w2 s/ c' D' Q2 X' ?
3getset,查询或设置已有轴的各种特性;# `/ I( D+ N2 w1 X5 J8 t( G
4gca,返回当前轴的句柄。3 i& J+ Q; b3 u( K$ q, y
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
+ x  F7 j/ w- ~9 \axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。  U' S* I' b  L1 c- S9 \; F- W" J  K
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
0 ]: q, V$ s. e! o1 F+ B% y  F% Pset
gca,’ytick’,[-0.3:0.1:1];
& M+ R7 [6 y5 x5 c: |
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:! h1 Y2 q0 ^8 k5 k
set(gca,’Xtick’,-pi:pi/2:pi);7 K9 X1 a" I- ]; i
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};1 ^. s- z5 T8 J3 g* h4 k
Axis square
设置两坐标轴长度成相等。
4 d: v% h7 a5 s1 S7 ^. BAxis equel
设置坐标轴标记间距相等;. H1 Y& }0 V' o: @* k% l
Axis equel tight
;设置图形以紧缩方式显示。
1 L5 q3 X- o: f5
.图形窗口( @0 q8 ~# t* H+ z" Y! H
figure(2);%
以第二个图形窗口作为当前图形输出的窗口;. j* g& {# |9 C
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;
+ x3 h+ s4 Q8 T, Tcolordef
颜色;%如whiteblack等,设置绘图背景颜色。% w% o/ N( @' E8 G) [
6
.图形标注0 I! w2 N( N% w, H" o. ^- j" g
Matlab
提供了几个函数用于图形的标注:
) e8 M: R1 J# O( }  v+ |
函数名功能描述
7 j( H) c8 x$ I4 n: sTitle
添加图形标题$ U6 f1 C8 v% _8 f
Xlabel
xlabelzlabel添加XYZ轴标注
4 y  r& p7 `: E8 oLegend
在图形中添加图例, e) c& w; r7 b/ {
Text
在指定位置显示文本4 _/ @1 o7 q. Q7 u& S, y. g
Gtext
使用鼠标将指定文本放在图形中的位置
; A# D2 o% C; h( \4 m
如下为添加标题,坐标轴标注实例:- @1 L5 {* |* e; ]% w
>> t=0:i/100:i*2;4 q/ J9 g0 d5 f% ?  I
>> plot(t,sin(t));- N" z% S8 I/ |; b1 f. }
>> xlabel('t=0 to 2pi','Fontsize',16);
% o1 l+ A" M# g$ A* Y>> ylabel('sin(t)','fontsize',16);0 Q+ Q: v0 s* i# y" i: @
>> title('Value of the Sine from Zero to Two pi','fontsize',16)$ b: E- i/ k& H/ @
注:标注时:pi显示成希腊字母,alphabeta
& J( H; \- y4 ]* |% D
在图形中添加标注与图例,如下:
, R) N- q% M1 v>> t=0:i/100:i*2;( A$ X8 y( L6 _" {. r
>> plot(t,sin(t));; ]# _6 Y3 k  M$ o0 d% N( M
>> xlabel('t=0 to 2pi','Fontsize',16);
! x% u0 o& L: k>> ylabel('sin(t)','fontsize',16);0 G( k% h% Q, d' \8 E7 g2 q) t
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
/ Y: E& W* |, r$ c>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
4 @  ^6 S+ t4 Q, l>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)
. @# U: s0 ]2 ~$ @. S/ _/ Q4 ^! j>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)
1 [* B# Q$ P8 N6 k, a>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。. b* U% x: Z( ^
>> H=legend('con','sin',0)
%绘制图例8 t+ T; _, A1 A
* i/ n2 e* Y1 W; n% |

; W$ n0 T: Z- S( w1 h$ r* G
/ z( A" X( M; |2 _- d+ H3 D/ [! c改变坐标轴的显示位置) q. N( O1 m5 V0 B$ s& W" ]
set(gca, 'XAxisLocation', 'top')
) X0 L* B( }+ c3 n9 M$ k; ~* F+ L' c2 Wset(gca, 'YAxisLocation', 'left')
1 ^, z6 P' l. \& d% a" M                    0 Q  o% N; a3 n/ x4 r) R; K4 K
9 q) T: |6 ]0 `6 W& R
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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