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

【Matlab】坐标轴的设置

[复制链接]
使用matlab的绘图函数plot绘图时系统默认设置了一些属性,例如坐标轴字号大小等并根据情况自动设置坐标轴显示的上下限,这些属性可以通过函数灵活改动,此处总结一小部分。
! F7 g% _- F0 ]. h% u9 O. X) t0 Bfigure;
: j+ h  ]& g' V% Z% ^  @: w# l, O%设置坐标轴线宽,加边框,坐标字号
: [0 f5 }. ?' @3 m0 P, t7 S7 d1 y( saxes('linewidth',1, 'box', 'on', 'FontSize',16);
; ~' L6 j% A& B8 C" }
%设置坐标轴label
, ]8 j" F2 m0 `4 y4 p0 b6 ]* b& Y$ Mxlabel('
时间(s)','FontSize',16);
, f: @3 K( y( v3 S! _ylabel('
压力(pa)','FontSize',16);9 i( m/ f- m, f) \7 k. \
grid on;
" @# W* B% x- O+ e! \: ]hold on;
* f) u& m  z' _$ Pplot(ScopeData1.time, ScopeData1.signals.values, 'k', 'linewidth', 1);
2 t+ @! f& d4 @, M6 v; a# {
%设置坐标轴上下限0 g# Y2 o' O- N# S9 c  h$ ]& O
xlim([0, 0.5]);
2 @. o7 F# {: \$ l  J& V2 e
ylim([5300000, 5800000]);; c, ^$ }) K2 X* E5 E

+ G3 F$ e9 u! KMATLAB
操纵坐标轴1 p, g4 X* p+ O8 ?4 f' t9 U* T
axis off;        %
去掉坐标轴( ~) z: ~4 b$ L( i. g+ i; {$ @1 d" H
axis tight;                     %
紧坐标轴5 u. y3 ?% i' E( i# R# H+ Y) S
axis equal;                     %
等比坐标轴) G; s/ ~; Y; Z4 i1 {
axis([-0.1, 8.1, -1.1, 1.1]);   %
坐标轴的显示范围
: I# m* \$ q  x4 D: N9 a& m: o  ]' \! w+ u$ S9 T( Z$ Z
% gca: gca, h=figure(...);
: h, a* _# s- Gset(gca, 'XLim',[3 40]);                   % X
轴的数据显示范围
, h( `% H% x0 g6 Sset(gca, 'XTick',[-3.14,0,3.14] );         % X
轴的记号点 7 J' V) q1 d6 T9 @6 R( ^
set(gca, 'XTicklabel',{'-pi','0','pi'});   % X
轴的记号4 q2 Z; v, Z1 m7 t' l. D8 z$ ?
set(gca, 'XTick', []);                     %
清除X轴的记号点1 K8 ]% j" Z# p3 h2 I6 x1 }' p
set(gca, 'XGrid','on');                    % X
轴的网格% c, }/ P- w% I, @1 }
set(gca, 'XDir','reverse');                %
逆转X
9 `: `# N6 b0 M8 Z7 u* W+ [8 rset(gca, 'XColor','red');                  % X
轴的颜色( W( m; d5 S3 k6 Z9 H: {( o/ H/ I
, F+ d5 s; }, c$ }4 H  G. n

  _$ d2 ~& e: @6 T3 y4 X7 h* e

: p8 W+ D+ M* }; ?/ Z[Matlab]图对象" p9 E2 Q: p: D7 ^1 Z7 H# F
5 a4 B8 }" F7 M6 K8 i0 B
首先要了解的是Matlab是面向对象的。最高等级的对象是screen,它定义了figure可以用的最大szie
6 D  G$ e4 S# X- bscreen
下面是figurefigue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化,screen是不会跟着变化的。但screen变化的话,figure就要跟着变化了。! ^0 O- C! p1 W- b  s" F
figure下面是axesaxes是那个窗口里面你要画的东西。axes的大小和位置取决于figure,如果你放大缩小figure的大小的话,里面的图线也会跟着变化的。
( Z/ j, V9 j) V; ?  ]plot(j,y,'Marker','+','LineWidth',1.5,'LineStyle',':','Color',[00 1])' I+ L: D% @& W4 T, H
% 设置坐标轴距离画板边距,左下山下,依次调整图的空白区域。
: [+ i$ ^) f! x% Y. Q7 d8 f" Kset (gca,'position',[0.1,0.1,1,1] );

( @& t  J# R1 f2 z& m" J! B
2 N2 k* s5 y, d3 j8 {2.matlab画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚。# O. D' v* m$ c+ O" g, D
我摸索出比较好的方法是如下的代码:
: S' t+ T/ E/ P5 j/ @: }0 V%%%%%%%%%%%%%%%%%%%%%
3 g3 s8 ^" w' P9 j%plot your figure before
5 P" a5 A% E8 X. t+ H5 J: p+ j%%%%%%%%%%%%%%%%%%%%%
, }4 I- B& T: a! E, {3 T" r% figure resize# i( O1 W- n3 h( Y+ c4 j
set(gcf,&#39osition',[100 100 260 220]);( J3 _- x, H) S5 l3 r6 D
set(gca,&#39osition',[.13 .17 .80 .74]);' b( v2 M7 a8 J8 R$ M3 Z! D
figure_FontSize=8;
  v0 y, U! `+ y. R  P& i. Qset(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');  }! [5 o' o- i- R/ Q
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');1 e9 C+ m% y0 j- v( R
set(findobj('FontSize',10),'FontSize',figure_FontSize);
8 p/ k" {* B! z8 zset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);

* j9 \2 c6 c7 V%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 `# l3 K3 q" j) l6 ^解释:( L$ X/ K  h3 ^. b% z* J
set(gcf,&#39osition',[100 100 260 220]);
$ v3 X% m- j- c# ~0 z
这句是设置绘图的大小,不需要到word里再调整大小。我给的参数,图的大小是175px
  S3 _6 r. y! E2 Q. U) vset(gca,&#39osition',[.13 .17 .80 .74]);- Z( Q1 L! Q2 ]4 b
这句是设置xy轴在图片中占的比例,可能需要自己微调。
4 Y6 _$ U& y$ @3 qfigure_FontSize=8;$ f* g" Y( U2 Z* Z5 q( I# u
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
1 i, U* d! j' ?& ?: L3 o, w5 Dset(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');$ w' K) z2 v2 b) q3 Q
set(findobj('FontSize',10),'FontSize',figure_FontSize);

" t2 u/ q( G# v8 @1 F/ ?1 M8 l. ^4句是将字体大小改为8号字,在小图里很清晰
! h0 A4 a5 O  g; lset(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',2);
. j4 u6 B& ?, H, q/ j$ T6 _这句是将线宽改为2
$ [/ @' X0 w) j1 k3.设置坐标轴参数
: i3 Q. C0 Z; `8 x  A; u
1axis,设置当前轴的坐标范围;+ }! ~1 L, G- q7 ]8 K
2axes,用指定的特征创建一个新坐标轴;
  _; ?; m9 H5 p/ V& }0 @2 n
3getset,查询或设置已有轴的各种特性;- J; m% ^- K+ w) }* w! b% O
4gca,返回当前轴的句柄。
  I/ \9 U: t0 ~6 s
如果图形中有多个坐标轴,在当前轴为最后图形创建的图形的坐标轴。Matlab绘制图形数据时候,会自动选择坐标轴范围,用axis可以设置新的坐标轴的范围,用一个具有四个元素的矢量表示坐标范围,格式为:
, h# C1 }* |; g$ J  Oaxis([xmin,xmax,ymin,ymax])
;如果不指定某一个方向范围可以使用inf或-inf表示,则产生半自动坐标轴范围。+ Y. m* P8 D. T) c; y
对于线性坐标轴,matlab会自动根据数据范围设置等间距的坐标轴数值标记,用set,修改gca变量中xtickytick的属性值,可以自定义坐标轴标记。如
: @% ]- b  Y( N, e* c7 Eset
gca,’ytick’,[-0.3:0.1:1];
1 Q* i0 Y, K6 _% \" S7 \
可以使用字符矢量通过修改gca变量中的’XtickLabel’实现标记字符,如:
. R4 b1 d5 ]3 o2 R  C4 jset(gca,’Xtick’,-pi:pi/2:pi);7 _$ ]4 q9 M' `: q3 t. x3 G
set(gca,’XtickLabel’,{‘-pi’,’-pi/2’,’0’,’pi/2’,’pi’};
/ G( W& q- {; z4 dAxis square
设置两坐标轴长度成相等。$ P! b! T8 p) B: W( ^
Axis equel
设置坐标轴标记间距相等;
# ]3 w6 }- {: cAxis equel tight
;设置图形以紧缩方式显示。
; J% P# o$ Q+ u0 R9 O6 C5
.图形窗口
6 e4 }* U, q3 d6 h3 b# N" `figure(2);%
以第二个图形窗口作为当前图形输出的窗口;7 h; {  D+ W+ i3 D! |7 j  H
subplot(m,n,i);%
分成m×n个小区域,I指定当前绘图区域;; m! M% N/ c& Y5 q( e
colordef
颜色;%如whiteblack等,设置绘图背景颜色。
3 Y+ c- i8 [- I2 f6
.图形标注
* m# C- s9 O# Y8 p' E3 gMatlab
提供了几个函数用于图形的标注:
# s- {# _3 w+ R& m
函数名功能描述0 K" y# T# q+ h
Title
添加图形标题- @* v6 Q. \5 F1 N8 l0 H  ?0 l
Xlabel
xlabelzlabel添加XYZ轴标注& d2 E$ I( V- p+ r3 W
Legend
在图形中添加图例/ |( M" B0 b: i7 v& c+ ?  N
Text
在指定位置显示文本
: \! f) Z% Q# {5 u+ [4 mGtext
使用鼠标将指定文本放在图形中的位置  N5 c( n& G6 N9 Z! O" z
如下为添加标题,坐标轴标注实例:
. z& H* a" [" {2 o>> t=0:i/100:i*2;+ I# K* w) H/ q9 k/ n7 I
>> plot(t,sin(t));) _7 x* s  Y( C4 k* W+ K) ~, N( ?9 t
>> xlabel('t=0 to 2pi','Fontsize',16);+ X; ?1 i% s: h- [' P
>> ylabel('sin(t)','fontsize',16);# `5 P1 L5 O2 w/ z
>> title('Value of the Sine from Zero to Two pi','fontsize',16)# f" l7 ]  j  z: w8 m
注:标注时:pi显示成希腊字母,alphabeta
. W* V+ r- n; V9 T; \8 {# K" w6 n
在图形中添加标注与图例,如下:% F# h8 f+ K" Y% h; d) ^; A" P
>> t=0:i/100:i*2;& z, L  m( t% |& p0 h; g! P! v1 E) I# H
>> plot(t,sin(t));
" q5 t6 p7 s# P! F5 L>> xlabel('t=0 to 2pi','Fontsize',16);- b, K7 w- L! I  ?
>> ylabel('sin(t)','fontsize',16);- d5 L0 l) g7 `; Q
>> title('Value of the Sine from Zero to Two pi','fontsize',16)
! L4 {6 W6 g- i& p' \>> text(3*pi/4,sin(3*pi/4),'leftarrow=.707','fontsize',16)
6 V2 C* P$ v. ~( z( n  C>> text(pi,sin(pi),'leftarrowsin(t)=0','fontsize',16)/ p: ]/ i  b" g$ B8 c
>>text(5*pi/4,sin(5*pi/4),'sin(t)=-.707rightarrow','HorizontalAlignment','right','fontsize',16)
' _/ i# P$ u. A# @3 Q2 Q& `>> gtext('graph of function sin(x)')
%可以用鼠标指定字符串所需放设位置。6 O. V& V( ]" X* [
>> H=legend('con','sin',0)
%绘制图例
# f. i+ t* _1 I# u& Y( g8 h
5 q3 a3 C2 o: T+ R0 @. W) n+ Z8 u5 T; o3 R

9 b9 l. H9 Q! R/ {0 Q改变坐标轴的显示位置
, J0 ]8 n6 R# `- ~8 H0 B* W) Jset(gca, 'XAxisLocation', 'top')
: q6 a& V, ?  _; d7 Bset(gca, 'YAxisLocation', 'left')
7 K2 y& L$ }+ C3 ]                    / n- N8 {6 {$ w7 b

5 E! X1 h7 i7 @/ U% T                                        转载本文请联系原作者获取授权,同时请注明本文来自叶瑞杰科学网博客。
回复

举报 使用道具

相关帖子

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