set2xyaxis
With linkaxes function, your scale limit for both x-axis or y-axis are same.
It does not allow user to zoom it and out with different scale of the both x-axis or both y-axis.
It can be solved by set2xyaxis and it allows user to zoom in and out of the graph.
% set2xyaxis help you to set the 2nd axis with different scales
% zoom function is built to allow user to zoom in and out of graph
% The scale of two axis will follow the zoom proportionally.
%
% set2xyaxis(labelx1, labely1,labelx2,labely2,xlim2,ylim2)
% Example :
% figure
% x1 = 0:0.1:40;
% y1 = 4.*cos(x1)./(x1+2);
% line(x1,y1,'Color','r')
% set2xyaxis('ni hao','da jia hao','hao ma',1,[0 2],[30 40]);
%
% Copyright 2018 Kevin Chng. kevinchng@hotmail.com
if nargin < 6
error('Not enough input arguments');
end
%% Second Axes
global ax1 scaleX
ax1 = gca;
ax1_pos = ax1.Position; % position of first axes
xlabel(labelx1);
ylabel(labely1);
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none');
xlabel(labelx2)
ylabel(labely2)
set(ax2,'xlim',[xlim2(1) xlim2(2)]);
set(ax2,'ylim',[ylim2(1) ylim2(2)]);
grid on;
%% Count the scale
scaleX = (ax1.XLim(2)-ax1.XLim(1))/(ax2.XLim(2)-ax2.XLim(1));
%% set properties of call back function
h = zoom(ax2);
h.ActionPostCallback = @mypostcallback;
h.Enable = 'on';
end
function mypostcallback(obj,evd)
newLim = evd.Axes.XLim;
global ax1 scaleX
set(ax1,'xlim',[newLim(1)*scaleX newLim(2)*scaleX]);
end
引用
Kevin Chng (2024). set2xyaxis (https://www.mathworks.com/matlabcentral/fileexchange/68671-set2xyaxis), MATLAB Central File Exchange. に取得済み.
MATLAB リリースの互換性
プラットフォームの互換性
Windows macOS Linuxカテゴリ
タグ
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!