是否有一种简单的方法可以在绘图轴上获得自定义缩放?
例如,半语功能提供{x,log10(y)}缩放,使得人们可以自动放大/缩放并且标签和标签自动调整。我希望{x,asinh(2 * y)}缩放具有相同的功能。解决方案:plot (x, asinh (2*y));
set (gca, 'YTickLabel', num2str (sinh (get (gca, 'YTick')(:)) / 2, '%g'))
适用于“静态”情节,但我希望有标记 - 标记在缩放时自动调整...
答案 0 :(得分:3)
这是感兴趣的功能。每次放大/缩小时,它都会缩放Y轴。使用'sinh'变换,但它可以是任何变换。
它背后的matlab核心功能是'ActionPostCallback'。有关详细信息,请参阅http://www.mathworks.fr/fr/help/matlab/ref/zoom.html。也可以使用模拟功能'ActionPreCallback'。这些小巧的功能也可用于主要功能'rotate3d','pan','zoom'和'brush'。
function applyCustomScalingWhenZooming
%some data
x=1:1/1000:100;
y=1:1/1000:100;
%figure
figure;
plot (x, asinh (2*y));
set (gca, 'YTickLabel', ...
num2str ((sinh (get (gca, 'YTick')) / 2)(:), '%g')); %initial format
%defines callback when zoom action
h = zoom; %define handle for 'zoom'
%action to be called right after zooming
set(h,'ActionPostCallback', {@mypostcallback});
function mypostcallback(obj,event_obj)
%format function
set (gca, 'YTickLabel', ...
num2str ((sinh (get (gca, 'YTick')) / 2)(:), '%g'));