永发信息网

在matlab中画两个函数的图像,y=sinx,y=cosx,怎么把函数名表在相应图像旁?另如何去掉边框和纵轴?请高手帮忙回答,急啊

答案:2  悬赏:40  手机版
解决时间 2021-05-09 14:18

在matlab中画两个函数的图像,y=sinx,y=cosx,怎么把函数名表在相应图像旁?另如何去掉边框和纵轴?请高手帮忙回答,急啊

最佳答案
此函数可以把所有这样的图形图像的坐标轴画在原点,只要已知图像的句柄。

函数如下:

function  new_fig_handle = shift_axis_to_origin( fig_handle )

% 本函数目的是把 matlab 做的图坐标轴移到图形的中间部分去(与数学的做图习惯一致)
% 2008.10.08 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 ;
    set(gca,'xlim', xL + [ -extend_x extend_x]) ;
    set(gca,'ylim', yL + [ -extend_y extend_y]) ;
   
    pos = get(gca,'Position') ;
    box off;
   
    x_shift = abs( yL(1)/(yL(2)-yL(1)) ) ;
    y_shift = abs( xL(1)/(xL(2)-xL(1)) ) ;
    temp_1 = axes( 'Position', pos + [ 0 , pos(4) * x_shift , 0 , - pos(4)* x_shift ] ) ;
    xlim(xL) ;
    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 ] ) ;
    ylim(yL) ;
    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) * yL(1)/(yL(2)-yL(1)) ;
    arrow_pos_in_y_dircetion = Base_pos(1) - Base_pos(3) *xL(1)/(xL(2)-xL(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');

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

下面是一个例子:

% 本程序目的是把 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 ) ;

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

此例子的实现效果如下两个图所示:

[ 本帖最后由 impu 于 2008-10-9 15:48 编辑 ] 附件

1.jpg (18.08 KB)

2008-10-9 15:45




2.jpg (15.58 KB)

2008-10-9 15:45


全部回答
subplot(1,2,1) fplot('cos',[-pi,pi]) grid on box off set(gca,'xgrid','off') text(0,0,'y=cosx') subplot(1,2,2) fplot('sin',[-pi,pi]) grid on box off set(gca,'xgrid','off') text(0,0,'y=sinx')
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
关于买卖QQ三国账号
欲购买一款诺基亚港行N79,请朋友给个信的过
一品画艺在哪里啊,我有事要去这个地方
关于维他命写给李炜的歌的链接地址
猪腰子怎么洗才没味道
缘份真是注定的吗?
能不能恢复被删除的校友
皇马今年能夺冠吗?
新浪微博和腾讯微博哪个先出现的?哪个人比较
做生意 好么
生死体验时怎么会没有感觉?并没有出现一丝想
车载电源充MP4问题
索尼爱立信w850能不能用电信的天翼业务?
QQ华夏医生全极品能卖多少钱?(BB,装备,马
阿紫诗歌我想,我想看几首秋去冬来的诗歌。
推荐资讯
做他一辈子的情人这样的想法对吗?是爱还是喜
Sechenca 这歌地址你有么!555555555
无重力 歌词
帮忙识别真伪巴萨围巾
求一份摄影社会实践报告3000字
淮南工行的.swift是多少
老板对离职员工祝福语,给离任上司的祝福语
怎么解决DNF一次掉线之后陆续掉线?
小喇叭说过的消息怎么查看
头发太干又开叉该怎么护理。
A level具体是什么
非诚勿扰8.7直播非诚勿扰8.7直播视频非诚勿扰
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?