如图,我想将Y轴移动到x=2的位置,翻了官方文档还是找不到怎样做,谢谢了!
2条回答 默认 最新
- 技术专家团-Joel 2022-03-03 09:22关注
用一下这个函数就行了
function axescenter(ax) if nargin<1 ax = gca; elseif ~ishandle(ax) || isempty(strmatch('axes',get(ax,'type'))) error('Input argument must be the handle to an axes. See help.') end if any(strmatch('log',get(gca,{'xsca','ysca'}))) || all(get(ax,'view')) error('AXESCENTER does not work for log scaled or 3D axes. See help') end D = get(ax,{'pos','xlim','ylim','units','parent'}); %Set these props first. fc = get(gcf,'color'); % We are going to hide ax in the figure. set(ax,'tickd','out',{'xcolor';'ycolor'},{fc,fc}); H = get(ax,{'xlabel','ylabel','title'}); % Don't want to hide these guys. set([H{:}],{'color'},{'k'}) % Next create our fake axes that will act as the center axes. S.a1 = axes('units',D{4},'posi',[D{1}(1)+D{1}(3)/2 D{1}(2) .01 D{1}(4)],... 'ylim',D{3},'xtick',[],'handlev','of','tag','XAXIS','color','none',... 'hittest','off','parent',D{5}); % Give this fake axis the props. S.a2 = axes('units',D{4},'posi',[D{1}(1) D{1}(2)+D{1}(4)/2 D{1}(3) .01],... 'xlim',D{2},'ytick',[],'handlev','of','tag','YAXIS','color','none',... 'hittest','off','parent',D{5}); % Give this fake axis the props. setappdata(ax,'CENTERAXES',S); % Store the handles in appdata of AX.
示例:
x = rand(20,1)*4; y = rand(20,1)*3 - 1.5; plot(x,y, 'bo', 'markerfacecolor', 'b') set(gca, 'xlim', [0, 4], 'ylim',[-1.5, 1.5]) % 注意是区间的中间为坐标轴位置 grid on axescenter
效果
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用