【问题标题】:How to set axis limits globally in MATLAB to min and max of data plotted?如何在 MATLAB 中将轴限制全局设置为绘制数据的最小值和最大值?
【发布时间】:2018-10-21 19:03:49
【问题描述】:

我正在尝试在 MATLAb 中绘制一些数字。一旦使用 subplot 功能使多个图形并排放置,轴限制就会发生变化,因此我没有将它们设置为 x 和 y 的最小值和最大值,而是总是有一些额外的空白。

我正在尝试找到一种方法将 x 和 y 轴值设置为它们的最小值和最大值。我的图中大约有 50 个图,并且每个图的 x 和 y 的名称都不同......每次都要求 MATLAB 将 x 和 y 限制为它们的最小值和最大值需要花费时间并增加行数......

那么有没有任何全局方式来定义它?

我也看过类似的question,但似乎没有回答我的问题。

这是一个小的虚拟代码,显示了与我的图表类似的问题......

x = linspace(0,2*pi,20); 
y = sin(x); 
figure(1) 
subplot(4,3,1)
plot(x,y)
title('Original')
fft_y = fft(y); 
subplot(4,3,2)
plot(abs(fft_y))
title('Spectrum')
subplot(4,3,3)
plot(angle(fft_y)) 
title('Phase')

【问题讨论】:

  • "globally" 定义不明确。设置默认值需要数字,而您有 [0 8][0 400],它们是不同的数字。您必须使用 xlim([]) 为每个子图设置它们
  • 所有我想做的就是告诉你的 ecery plot 的 matlab 设置 x 轴到它的最小值和最大值,y 到它的最小值和最大值,而不需要我设置它......我希望存在这样一个事情。
  • 最好的方法是对每个绘图/轴执行“轴紧”。这可以满足您的需求,而不是“全局”
  • 这很有帮助,节省了很多时间而不会造成太多复杂性:) 谢谢

标签: matlab plot axis


【解决方案1】:

首先,要将 x 和 y 轴范围设置为其最小值和最大值,请使用 inf 或 -inf 作为您希望轴自动选择的范围。例如,axis([-inf 10 0 inf]) 让坐标区选择适当的最小 x 轴限制和最大 y 轴限制。

其次,要全局设置 x 和 y 轴范围,让每个子图的 ax_n = subplot(4,3,n)。然后在最后使用 axis([ax_1, ax_2, ax_3], [-inf inf -inf inf]) 来同时设置所有子图。

x = linspace(0,2*pi,20); 
y = sin(x); 
figure(1) 
ax_1 = subplot(4,3,1)
plot(x,y)
title('Original')
fft_y = fft(y); 
ax_2 = subplot(4,3,2)
plot(abs(fft_y))
title('Spectrum')
ax_3 = subplot(4,3,3)
plot(angle(fft_y))
title('Phase')

axis([ax_1, ax_2, ax_3], [-inf inf -inf inf]);

输出:

【讨论】:

    猜你喜欢
    • 2013-01-23
    • 2018-05-30
    • 2014-03-24
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多