【问题标题】:Finding the limits of automatically-adjusted axes in a MATLAB plot在 MATLAB 图中查找自动调整轴的范围
【发布时间】:2013-02-14 06:58:56
【问题描述】:

我正在创建一个二维 MATLAB 图。我正在设置 x 轴的限制,并让我的 y 轴自动调整(通过将其限制设置为 [-inf inf])。创建绘图后,我需要检查我的 y 轴已自动调整为什么(因为我将创建一个热图放在我的绘图下)。

不幸的是,ylim(和类似的函数)只产生 [-inf inf],而不是轴调整到的任何值。

重现此问题的一些代码(比我的实际代码简单得多)是:

function createplot(xbounds)
x = xbounds(1):0.5:xbounds(2);
y = x.^2;
plot(x,y);
axis([xbounds,-inf,inf]);

createplot([0,10])

这会产生一个 y 限制 = [0,100] 的抛物线图。但是,ylim = [-inf, inf]。

任何帮助将不胜感激!

/威尔伯

【问题讨论】:

  • @Shai 正确,axis 的第 3 和第 4 个元素将返回 [0 100]
  • @Shai,对我来说(Matlab 2012a)它确实有效,我会将其作为答案发布,以便您看到我正在使用的代码。

标签: matlab matlab-figure


【解决方案1】:

正如@Shai 建议的那样,axis 可以提供有关 ylimit 的信息,而无需将它们设置为 [-inf,inf] 或使用轴设置 x 轴边界:

xbounds=[1 10]
x = xbounds(1):0.5:xbounds(2);
y = x.^2;
plot(x,y);
xlim([xbounds(1) xbounds(2)]);
v=axis 

v =
     1    10     0   100

【讨论】:

  • 您的代码与@Wilbur 的代码略有不同:您只使用xlim 来设置坐标轴,而Wilbur 使用axis[-inf inf] 来设置ylim。似乎一旦将ylim 设置为[-inf inf],就没有回头路了。因此,您的答案的本质应该是不要使用[-inf inf] 设置自动轴限制,而是一起跳过它并使用xlimylimzlim 设置只有那些你必须手动配置的轴.
  • 确定后面有,只要使用set(gca, 'ylimmode', 'auto')。但是,这会破坏严格的轴限制,并用 Matlab 的正常自动调整代替它。
  • @natan - 我很高兴你给了我这样的信任。但是,恐怕,我只是想在axis( [xbounds -inf inf] )之后添加v=axis...
【解决方案2】:

看着@natan's answer我觉得解决你问题的方法是

请勿使用[-inf inf] 自动调整轴限制。

如果您希望 Matlab 自动调整您的某些轴限制并手动设置其他轴限制,那么您应该使用 xlimylimzlim 来设置您希望设置的特定轴并保留所有其他不变,以便 Matlab 可以自动设置它们。
这样您就不会覆盖 Matlab 分配给这些轴的值,您将能够使用 axisxlimylimzlim 读取它们。

请参阅@natan 的答案以获得更正的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多