将绘图属性同时应用于所有MATLAB子图

Spa*_*cey 7 matlab plot vectorization subplot

我想创建一个图形,一旦创建了子图,我想同时将属性应用于所有这些,而不需要通过for循环.事实上,我想在不需要进行for循环的情况下完成以下所有操作:

  • 在没有for循环的情况下创建所有子图.(例如,创建一个包含4x5子图的图形,而不是使用for循环).
  • 将相同的背景颜色应用于每个具有foor-loop的子图.
  • 将相同的轴命令应用于所有这些命令,无需for-loop.(如轴相等,轴紧等).

有没有办法做到这一点?

Jon*_*nas 10

最方便的方法是创建一个轴手柄数组,然后设置属性:

for i=1:4,
   axesHandles(i) = subplot(2,2,i);
   plot(...)
end

%# set background to black for all handles in the array
%# note that this needs no loop
set(axesHandles,'color','k')
Run Code Online (Sandbox Code Playgroud)

如果没有收集轴手柄,则需要先收集手柄数组.为此,您可以使用图窗口的子属性(gcf获取当前活动图形的句柄)

axesHandles = get(gcf,'children');
Run Code Online (Sandbox Code Playgroud)

如果你有几个数字的轴,你可以findall用来收集一切:

axesHandles = findall(0,'type','axes');
Run Code Online (Sandbox Code Playgroud)

从那时起,它再次是一次调用set,或者axis例如

set(axesHandles,'color','k','lineWidth',2)
axis(axesHandles,'tight')
Run Code Online (Sandbox Code Playgroud)