3

我在设置子图的位置时遇到问题。我在循环中使用子图。但是当我尝试对子图进行特殊定位时,它不起作用。这是我的代码:

h=subplot(2,2,3);
set(h,'position',[0.15 0.15 0.4 0.4]);
plot(d3,S3,'*','Color',colors(i,:));

我尝试了不同的方法,但看不到第三个子图,有时该图只显示一个迭代。

我怎样才能解决这个问题?

4

3 回答 3

3

subplot(2,2,3)这可能是由于具有自己的默认位置的子图图块编号(即等)与您输入的位置之间的位置值冲突而发生的。

因此,只需使用带有位置信息的子图,如下所示:

subplot('position', [0.15 0.15 0.4 0.4])
plot(d3,S3,'*','Color',colors(i,:));
subplot('position', [... ... ... ...])
plot(...);

另请参阅此 SO 讨论...

于 2013-05-26T22:14:59.050 回答
3

这将创建 3 个子图。位置是[左下宽度高度])。我通常会尝试确保 left + width < 1 并且 bottom + height < 1 (对于第一个子图)。

figure
set(subplot(3,1,1), 'Position', [0.05, 0.69, 0.92, 0.27])
set(subplot(3,1,2), 'Position', [0.05, 0.37, 0.92, 0.27])
set(subplot(3,1,3), 'Position', [0.05, 0.05, 0.92, 0.27])

如果您只有 1 列子图,则此方法效果很好。对于两列子图,请使用:

figure
subplot(4,2,1)
plot(...)
set(gca, 'OuterPosition', [0, 0.76, 0.49, 0.23])
subplot(4,2,2)
plot(...)
set(gca, 'OuterPosition', [0.48, 0.76, 0.49, 0.23])
subplot(4,2,3)
...
于 2013-05-27T13:14:57.597 回答
2

根据子图

subplot('Position',[left bottom width height]) 在由四元素向量指定的位置创建一个坐标区。左侧、底部、宽度和高度值是0.0 到 1.0 范围内的标准化坐标

另请注意,left 和 bottom 值是从图的左下角计算的。


这是在 for 循环中使用 subplot 的示例。

figure

% subplot dimension
n1 = 2; % number of rows
n2 = 3; % number of columns

% These values would define the space between the graphs
% if equal to 1 there will be no space between graphs
nw = 0.9; % normalized width
nh = 0.9; % normalized height

for k1 = 1:n1
    for k2 = 1:n2
        subplot(n1,n2,(k1-1)*n2 + k2,...
            'position', [(1-nw)/n2/2 + (k2-1)/n2, (1-nh)/n1/2 + 1-k1/n1,...
            nw/n2 nh/n1]);
        % plot something
        plot(rand(5));
        % turn off the labels if you want
        set(gca, 'XTick', []);
        set(gca, 'YTick', []);
    end
end

希望这可以帮助。

于 2013-05-26T23:02:56.117 回答