matlab 把座標軸移動到原點(0,0)上

2021-10-08 16:01:20 字數 3590 閱讀 3437

用matlab繪圖時,是不能顯示座標軸的,只會在底邊框和左邊框顯示刻度,而且左下角也不是原點(0,0)。所以,本文就是如何用matlab來實現把座標軸移到(0,0)。

function:

function fig_handle =

shift_axis_to_origin

( axes_handle )

% function: 本函式目的是把 matlab 做的圖座標軸移到圖形的原點

% input:

% axes_handle: 原座標軸控制代碼

% output:

% fig_handle: 把座標軸移動到原點的影象控制代碼

figure

('name'

,'shift_axis_to_origin'

,'numbertitle'

,'off'

)% 建立乙個新的視窗

fig_handle =

copyobj

( axes_handle , gcf )

;% 拷貝圖形到乙個新的影象控制代碼

xl=xlim ;

% 獲取x軸取值範圍的最小、做大值:xl =

[xlim_min,xlim_max]

yl=ylim ;

% 獲取y軸取值範圍的最小、做大值: yl =

[ylim_min,ylim_max]

xt=get

(gca,

'xtick');

% 獲取x軸的刻度

yt=get

(gca,

'ytick');

% 獲取y軸的刻度

set(gca,

'xtick',[

],'xcolor'

,'w');

% 把底部的x軸座標的刻度去掉並把底邊設定為白色

set(gca,

'ytick',[

],'ycolor'

,'w');

% 把左邊的y軸座標的刻度去掉並把底邊設定為白色

% 把 x 和 y 座標軸的兩個方向各延長 10

% (為了視覺上好看)

extend_x =(xl

(2)-

xl(1)

)*0.1;

extend_y =(yl

(2)-

yl(1)

)*0.1;

xxl = xl +

[-extend_x extend_x]

;yyl = yl +

[-extend_y extend_y]

;%重新設定座標軸的取值範圍

set(gca,

'xlim'

, xxl)

;set

(gca,

'ylim'

, yyl)

;pos =

get(gca,

'position');

% 獲取當前座標軸的原點座標和長寬:pos =

[bottom,left,width,height]

box off;

% 上邊和右邊的邊框去掉

% 計算原座標軸到原點在x,y方向上的偏移量

x_shift =

abs(

yyl(1)

/(yyl(2)

-yyl(1

)));

y_shift =

abs(

xxl(1)

/(xxl(2)

-xxl(1

)));

temp_1 =

axes

('position'

, pos +[0

,pos(4

)* x_shift ,0,

-pos(4

)* x_shift*

0.99999])

;% 把原底部的x軸移動到x=

0的位置上

xlim

(xxl)

;% 複製x軸的取值範圍

box off ;

set(temp_1,

'xtick'

,xt,

'color'

,'none'

,'ytick',[

]);%把背景設為透明,並顯示x軸刻度

set(temp_1,

'ycolor'

,'w');

%把y軸去掉

temp_2 =

axes

('position'

, pos +

[pos(3

)* y_shift ,0,

-pos(3

)* y_shift*

0.99999,0

]);% 把原左邊的y軸移動到y=

0的位置上

ylim

(yyl)

;% 複製y軸的取值範圍

box off ;

set(temp_2,

'ytick'

,yt,

'color'

,'none'

,'xtick',[

]);% 把背景設為透明,並顯示y軸刻度

set(temp_2,

'xcolor'

,'w');

% 把x軸去掉

base_pos =

get(fig_handle,

'position');

%獲取當前影象的左下角座標和長寬:base_pos =

[bottom,left,width,height]

arrow_pos_in_x_dircetion =

base_pos(2

)-base_pos(4

)*yyl(1)

/(yyl(2)

-yyl(1

));arrow_pos_in_y_dircetion =

base_pos(1

)-base_pos(3

)*xxl(1)

/(xxl(2)

-xxl(1

));annotation

('arrow',[

base_pos(1

),base_pos(1

)+base_pos(3

)],[arrow_pos_in_x_dircetion , arrow_pos_in_x_dircetion ]

,'color'

,'k');

annotation

('arrow'

,[arrow_pos_in_y_dircetion , arrow_pos_in_y_dircetion ],[

base_pos(2

),base_pos(2

)+base_pos(4

)],'color'

,'k');

end

main

close all;clear;clc;

x =0

:pi/15:

2*pi;

y =sin

(x);

plot

(x,y)

;shift_axis_to_origin

( gca )

;

matlab座標軸設定

1.axis xmin xmax ymin ymax 設定當前圖形的座標範圍,分別為x軸的最小 最大值,y軸的最小最大值 2.v axis 返回包含當前座標範圍的乙個行向量 3.axis auto 將座標軸刻度恢復為自動的預設設定 4.axis manual 凍結座標軸刻度,此時如果hold被設定為...

matlab座標軸設定

1.axis xmin xmax ymin ymax 設定當前圖形的座標範圍,分別為x軸的最小 最大值,y軸的最小最大值 2.v axis 返回包含當前座標範圍的乙個行向量 3.axis auto 將座標軸刻度恢復為自動的預設設定 4.axis manual 凍結座標軸刻度,此時如果hold被設定為...

matlab座標軸的設定

matlab 繪圖的時候只用 plot 函式出來的圖不一定符合自己最想要的格式,經常要對座標的數字 範圍 間隔做處理。雖然不是什麼很難的操作,但是確實常用,也容易忘記,所以就放在這裡說明一下 xlabel x name x軸名稱 ylabel y name legend 線條注釋,多條的話 lege...