• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Matlab - 将坐标轴移动到图形中央(转)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

function new_fig_handle = shift_axis_to_origin( fig_handle )

% 本函数目的是把 matlab 做的图坐标轴移到图形的中间部分去(与数学的做图习惯一致)

% 2008.10.10 in pku

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure(\'Name\',\'shift_axis_to_origin\',\'NumberTitle\',\'off\')   % Create a new figure

% 拷贝图形到一个新的窗口

new_fig_handle = copyobj( fig_handle , gcf );

xL=xlim ;

yL=ylim ;

xt=get(gca,\'xtick\') ;

yt=get(gca,\'ytick\') ;

set(gca,\'XTick\',[],\'XColor\',\'w\') ;

set(gca,\'YTick\',[],\'YColor\',\'w\') ;

% 把 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\') ;

box off;

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 ] ) ;

xlim(xxL) ;

box off ;

set(temp_1,\'XTick\',xt,\'Color\',\'None\',\'YTick\',[]) ;

set(temp_1,\'YColor\',\'w\') ;

temp_2 = axes( \'Position\', pos + [ pos(3) * y_shift , 0 , -pos(3)* y_shift*0.99999 , 0 ] ) ;

ylim(yyL) ;

box off ;

set(temp_2,\'YTick\',yt,\'Color\',\'None\',\'XTick\',[]) ;

set(temp_2,\'XColor\',\'w\') ;

Base_pos = get(new_fig_handle,\'Position\') ;

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

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 

% 本程序目的是把 matlab 做的图坐标轴移到图形的中间部分去(与数学的做图习惯一致)
% 2008.10.08
%
clc;clear;close all;
t=linspace(-2,8,100);
a1=axes;
plot(t,cos(t));
% xt=get(gca,\'xtick\');
% set(gca,\'XTick\',[],\'XColor\',\'w\');
% xL=xlim;
% p=get(gca,\'Position\');
% box off;
% a2=axes(\'Position\',p+[0,p(4)/2,0,-p(4)/2]);
% xlim(xL);box off;
% set(gca,\'XTick\',xt,\'Color\',\'None\',\'YTick\',[]);
new_fig_handle = shift_axis_to_origin( gca ) ;


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MATLAB 去掉坐标轴 - 1130136248发布时间:2022-07-18
下一篇:
MATLAB画图自动确定坐标范围(GUI)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap