【问题标题】:Matlab dynamic plot axisMatlab动态绘图轴
【发布时间】:2018-10-25 14:40:01
【问题描述】:

目前我正在网格中绘制两个点,并且我正在使用 xlimylim 来强制调整我的绘图比例,就像这样

但我想要一个根据我的目标位置动态改变轴的图。这是因为我的红点可能高于xlimylim 或低于它,就像这两种情况一样。

在第一个中,该点位于窗口之外,因此我看不到它,而在另一种情况下,该点靠近绘图的原点,我想更仔细地查看它,例如我放大。 目前我正在使用

plot(x,y,'.','MarkerSize',20,'Color','r');
xlim([-a a]);
ylim([-a a]);

我认为要做我需要的事情,我应该以某种方式使用x,y 而不是a 或两者的组合,以便根据x,y 的尺寸获得更大的动态范围。 还有其他更简单、更快捷的方法吗?

【问题讨论】:

    标签: matlab axis figure


    【解决方案1】:

    您可以使用轴手柄并更改XDataYData 属性以动态更改轴限制。考虑以下绘制随机数据点并动态更新轴限制的示例代码,

    h = figure;
    % get axis handle
    ax = gca(h);
    set(ax, {'XLim', 'YLim'}, {[-1 1], [-1 1]});
    
    XY = [];
    
    for i = 1:100
        % generate random data point
        xy = 2*randn(1, 2);
        XY = cat(1, XY, xy);
    
        % get min and max values of points so far
        minVals = min(XY, [], 1);
        maxVals = max(XY, [], 1);
    
        % plot the data point
        scatter(xy(1), xy(2), 'b*');
        hold on;
    
        % update the axis limits dynamically
        set(ax, {'XLim', 'YLim'}, {[minVals(1)-1 maxVals(1)+1], [minVals(2)-1 maxVals(2)+1]});
        % pause so that you can see the plot update
        pause(0.5);
    end
    

    【讨论】:

      【解决方案2】:

      我认为您正在寻找axis tight 命令。根据文档,它的作用是

      通过将轴范围设置为等于数据范围,使轴框紧紧围绕数据。

      ...

      限制会自动更新以合并添加到轴的新数据。要在使用hold on 时保持限制不变,请使用axis tight manual

      这是一个演示:

      y = randi(21,10,1)-11;
      figure(); hP = plot(NaN(10,1),NaN(10,1),'-o'); axis tight; grid minor;
      for ind1 = 1:numel(x)
        hP.XData(ind1) = x(ind1);
        hP.YData(ind1) = y(ind1);
        pause(0.5);
      end
      

      注意轴限制是如何自动变化的:

      【讨论】:

      • 是否也可以使用axis tight + 的东西?因为axis tight 图中的最大值与图表的边界重叠
      • 那不会让他们tight :) 我想不出一个好的方法,但你可以尝试在情节之后添加hAx.XLim = hAx.XLim*1.1; hAx.YLim = hAx.YLim*1.1;(假设hAx 是轴的手柄)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      • 2015-06-10
      相关资源
      最近更新 更多