将轴的最小值和最大值设置为粘滞



我有一个(3,4(子图,每个子图显示散点图。散点图的范围各不相同,因此我的一些图具有轴x(0-30(和y(0-8(,但有些图具有x(18-22(和y((4-7(。我已经将xlim设置为[030],将ylim设置为[0],但这将我的轴设置为从不低于0、高于30等。

如何将我的轴设置为"粘贴"在(0,0(处作为每个绘图的原点,并将"粘贴"为Y的8和X的30。

TIA寻求任何帮助


根据回答的每条评论更新:
仍存在与以下代码相同的问题

%% plot
for i = 1:num_bins;
h = zeros(ceil(num_bins),1);
h(i)=subplot(4,3,i);
plotmatrix(current_rpm,current_torque)
end
linkaxes(h,'xy');
axis([0 30 0 8]);

要以编程方式设置轴边界,有几个有用的命令:

axis([0 30 0 8]);  %Sets all four axis bounds

xlim([0 30]);  %Sets x axis limits
ylim([0 8]);   %Sets y axis limits

为了只设置两个x限制中的一个,我通常使用这样的代码:

xlim([0 max(xlim)]);  %Leaves upper x limit unchanged, sets lower x limit to 0

这利用了xlim的零输入参数调用约定,该约定返回当前x限制的数组。ylim也是如此。

请注意,所有这些命令都适用于当前轴,因此,如果您正在创建子图,则在构建图形时,需要对每个轴执行一次缩放调用。


另一个有用的fatures是linkaxes命令。这将动态链接两个绘图的轴限制,包括用于编程调整大小命令(如xlim(和UI操作(如平移和缩放(。例如:

a(1) = subplot(211),plot(rand(10,1), rand(10,1)); %Store axis handles in "a" vector
a(2) = subplot(212),plot(rand(10,1), rand(10,1)): %
linkaxes(a, 'xy');
axis([0 30 0 8]);  %Note that all axes are now adjusted together
%Also try some manual zoom, pan operations using the UI buttons.

查看您的代码,在编辑后,您对plotmatrix函数的使用使事情变得复杂。plotmatrix似乎创建了自己的工作轴,因此您需要捕获这些控制柄并对其进行调整。(此外,将来将h = zeros(..)从循环中删除(。

要获得plotmatrix创建的轴的句柄,请使用第二个返回参数,如下所示:[~, hAxes]=plotmatrix(current_rpm,current_torque);。然后收集这些以备将来使用。

最后,axisxlimylim命令都作用在电流轴上(参见gca(。然而,plotmatrix轴从来都不是当前的,因此axis命令没有影响它们。您可以指定要作用的轴,如下所示:axis(hAxis, [0 30 0 8]);

把这些放在一起(添加一些变量定义以执行代码(,这就是它的样子:

%Define some dummy variables
current_rpm = rand(20,1)*30;
current_torque = rand(20,1)*8;
num_bins = 12;
%Loop to plot, collecting generated axis handles into "hAllAxes"
hAllAxes = [];
for i = 1:num_bins;
    subplot(4,3,i);
    [~, hCurrentAxes]=plotmatrix(current_rpm,current_torque);
    hAllAxes = [hAllAxes hCurrentAxes];  %#ok
end
linkaxes(hAllAxes,'xy');    
axis(hAllAxes,[0 30 0 8]);

相关内容

  • 没有找到相关文章

最新更新