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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
" s1 I; j6 e8 S' {1 J7 g" f8 sfigure;' d1 J6 y' s0 C
%设置坐标轴线宽,加边框,坐标字号
$ f1 j! r4 L" w+ [9 oaxes('linewidth',1, 'box', 'on', 'FontSize',16);
( D$ b* Z# d% B+ M- s
%设置坐标轴label) q9 a  T" U- z7 H- b
xlabel('
时间(s)','FontSize',16);" j/ ^$ l1 C. a! B
ylabel('
压力(pa)','FontSize',16);
. r; Y) A, [: r4 t5 Ngrid on;- l3 a. A8 J. Z: T$ z
hold on;
4 M8 [9 X' G, |. v$ H; _" Oplot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
& A# ]& H9 A$ o* O8 U% ^- b
%设置坐标轴上下限
& Z- N/ |4 ]2 exlim([0, 0.5]);

* B( N- x8 \1 N  G& \8 F, o. q- aylim([5300000, 5800000]);* ]9 l- f* `2 H% g/ A; y

4 S3 g! w6 I& @4 ZMATLAB
操纵坐标轴4 T7 i0 T* e4 K$ ]3 L" G
axis off;        %
去掉坐标轴
9 z: p5 t0 z  m6 P" vaxis tight;                     %
紧坐标轴
8 v9 r' e$ S0 V7 Paxis equal;                     %
等比坐标轴$ [3 A: j: n8 b& j/ }$ ?
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
  m% X0 C% K& `7 |
# C$ @  n3 R6 F1 i% gca: gca, h=figure(...);
/ W4 \7 [) U% s6 L4 f/ A  \, iset(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
/ o6 l% d& R3 e7 f( ]set(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 $ \+ h" a. H2 L3 x2 w1 d% H0 g
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号/ C2 F- x& K4 E2 j! w
set(gca, 'XTick', []);                     %
清除X轴的记号点5 O$ ^* j7 z  s1 d& c) R, u/ `+ |4 N
set(gca, 'XGrid','on');                    % X
轴的网格) b, [# M) g0 j8 ^: F
set(gca, 'XDir','reverse');                %
逆转X
, u2 Y/ \+ ^1 q! S1 _set(gca, 'XColor','red');                  % X
轴的颜色
# L3 z% R) u/ m5 k8 [
. N  b5 E# M7 U4 }& R4 b0 F/ @1 O# v7 d" o
+ ^. T! k% j' @
[Matlab]图对象
# X7 G" j4 }# O3 l# V& C 5 f# ?# G: \; q) L1 l
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie9 m0 Y9 H+ j7 }9 r  k9 D: o+ F
screen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。
7 o- d% s: |4 _: B5 [figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。! k/ e* l! b  ]/ x( O. a( [4 Z
plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])
' l- Y  h5 E8 o( a5 \% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。. e8 r# J  N" B$ B
set (gca,'position',[0.1,0.1,1,1] );

( J# {/ l8 p' W9 O% U; p8 S7 p : [! ?8 L. X/ `' K% g
2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。
* o3 P5 M  v% m' {3 K: B我摸索出比较好的方法是如下的代码:* l; H' y) w, {; r) H
%%%%%%%%%%%%%%%%%%%%%
% T% {' w4 r  y& S9 K%plot your figure before2 o& h3 t; R9 m$ `
%%%%%%%%%%%%%%%%%%%%%. u  M' R8 V: W9 c/ e4 h/ ~
% figure resize. O9 r! x6 B) k3 }$ t& i, d# w! S
set(gcf,&#39osition',[100 100 260 220]);
' Q/ L* l. l0 {7 t2 g3 K9 Sset(gca,&#39osition',[.13 .17 .80 .74]);6 S0 Q: I7 q+ e; i( L& t. m
figure_FontSize=8;$ X# t+ E5 W9 E3 ?; v
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
' o3 K7 f( Z, S4 qset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
1 o; H/ s1 W$ T% K$ s& Gset(findobj('FontSize',10),'FontSize',figure_FontSize);; a6 y8 m/ w1 z" R6 u0 I
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
0 a4 O. h! f2 h9 w
%%%%%%%%%%%%%%%%%%%%%%%%%%%%8 V0 M& U. Y" t7 y- h
解释:/ d4 I1 {9 V' e1 f; m
set(gcf,&#39osition',[100 100 260 220]);
2 U: A8 {- I  d$ S' S* v8 A/ g
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px9 V- Q# q, e2 q: ?! P- o
set(gca,&#39osition',[.13 .17 .80 .74]);
8 ?, ]( Z5 A8 n, _
这句是设置xy轴在图片中占的比例,可能需要自己微调。# Y- k/ Q8 x: H3 i, n  I) ?# `
figure_FontSize=8;8 f+ m, \2 v+ ?7 @$ Q
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');$ N5 Y% k+ w" c: r" e2 n
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
9 U6 g6 ~% J2 R0 G/ Lset(findobj('FontSize',10),'FontSize',figure_FontSize);

5 n9 d8 |' ?& T0 V4句是将字体大小改为8号字,在小图里很清晰
9 t: c6 H/ C9 i( E8 U% ^/ Bset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
  _4 U  ^: E  x% g8 F' J. {% }这句是将线宽改为2* [  F1 M) S& q# J  j
3.设置坐标轴参数
8 V* K7 o3 c4 {; ?1 J8 }
1axis,设置当前轴的坐标范围;
8 M& ?3 Z$ ?; Q# l' }7 W
2axes,用指定的特征创建一个新坐标轴;
5 ]4 B2 V/ H6 A6 [! p
3getset,查询或设置已有轴的各种特性;# V+ F% ]# z: n: K9 E3 g
4gca,返回当前轴的句柄。
: d' J1 a" o: a& C1 _. p* e( r' {
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:0 m* X" n7 Q) X$ S, j
axis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。
4 F" i* h# o, F  ~! J0 a6 i
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
) I$ G& ~; r! K- lset
gca,’ytick’,[-0.3:0.1:1];
) s: c- W" Y5 c6 J: d
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
& @; n3 N5 a' X% r/ l+ l6 t1 Dset(gca,’Xtick’,-pi:pi/2:pi);
5 g  p6 M6 Y& ^+ B, Kset(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
7 U; h, Q1 N% _9 O; F; j$ PAxis square
设置两坐标轴长度成相等。
6 S+ l1 R2 {8 K4 B- g% h6 p. SAxis equel
设置坐标轴标记间距相等;; B( {$ J( \$ d* U+ g0 R3 d4 L$ B3 E
Axis equel tight
;设置图形以紧缩方式显示。! t; Y& m1 Z9 }9 g) c) h
5
.图形窗口0 T: S: g& l& B' \8 s3 G7 ^" b
figure(2);%
以第二个图形窗口作为当前图形输出的窗口;. I' u, C1 s. K1 D  m5 Q$ D
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;& g; R9 @% w/ c4 j: G. q, e! Q9 W: [3 O
colordef
颜色;%如whiteblack等,设置绘图背景颜色。
! A, C9 h; e" F& m7 M. e5 _6
.图形标注
0 X, r  A6 h1 @& ]$ o- Y7 n5 tMatlab
提供了几个函数用于图形的标注:* k1 e* @9 O% m
函数名功能描述
/ J+ B- N, L% V* ^6 A! U* c2 @Title
添加图形标题0 r2 \' a  k. B7 T# }
Xlabel
xlabelzlabel添加XYZ轴标注
5 v  w7 i* o5 K; S- F. ELegend
在图形中添加图例% t2 H1 w7 |* u9 ?, R2 k
Text
在指定位置显示文本8 A9 C, r* s# B& Z
Gtext
使用鼠标将指定文本放在图形中的位置
' w# {: Y* q; ^2 G( R0 _6 ^
如下为添加标题,坐标轴标注实例:
0 h: r- n7 T1 \; e1 R>> t=0:i/100:i*2;& E# c5 L1 i2 v( F
>> plot(t,sin(t));1 l. F  A. E# H8 S
>> xlabel('t=0 to 2pi','Fontsize',16);' f) |  a. l2 t9 d! I7 x
>> ylabel('sin(t)','fontsize',16);$ R  q6 Z& ~. d+ ?  D4 `
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
; c+ {3 O* @) d6 \6 f
注:标注时:pi显示成希腊字母,alphabeta4 |; D  Z0 d- Q! F9 ^' }. u& m7 Z
在图形中添加标注与图例,如下:
3 L! N0 g; T: z  o- }( x2 j>> t=0:i/100:i*2;
" w1 j4 I! Z8 ^% ~>> plot(t,sin(t));
) t* W! N/ C3 ~) B  w% G8 w" }>> xlabel('t=0 to 2pi','Fontsize',16);
5 i& J  n$ g  v$ v>> ylabel('sin(t)','fontsize',16);
3 l% \! M+ z5 g9 _$ a# I# F>> title('Value of the Sine from Zero to Two pi','fontsize',16)" c& [+ @$ n) @2 c* F; {* H! T
>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)$ L9 N' X7 E! {1 b- U- F* h
>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)+ C' K  H3 G. ?* I/ P, \+ j6 Y( O
>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)  a* j: p+ v- m3 o- n
>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。
" W; q) E/ l- X2 p. ^" p0 x+ c>> H=legend('con','sin',0)
%绘制图例$ u7 Z1 `6 v* T
: h2 \. i+ h; R1 Z
- t7 h9 D/ k1 [6 o" _3 S
% W6 x0 {  n8 m& [
改变坐标轴的显示位置
6 E4 r2 b4 _5 M# \" d' Bset(gca, 'XAxisLocation', 'top'). y+ f3 w0 i9 o+ V6 A+ M
set(gca, 'YAxisLocation', 'left')6 a! O: g- L5 {/ Y
                    4 f/ G% _! A% q) n6 k( y' K
7 C% K# I7 L, T/ i) i9 e
                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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