图中的交换子图

时间:2015-10-09 09:15:04

标签: matlab matlab-figure figure subplot

我创建了一个包含4个子图的图形,如:

y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
fig = figure
for i = 1 : 4
    h(i) = subplot(1,4,i)
    bar(y)
end

现在我想交换子图的顺序。例如,第一个子图应该放在最后一列(第4个),第二个子图应该与第3个交换。

如果不重新生成这个数字是否可行?

3 个答案:

答案 0 :(得分:5)

也许您可以更改轴'position'的{​​{1}}。例如:

h

答案 1 :(得分:2)

有可能再生这种形象。您可以转到绘图工具,右键单击该图并选择"显示代码"。这将打开一个带有重新创建图形的函数的新文件。在那里你可以改变你的subplot-position并调用函数以获得带有切换子图的数字。

虽然这会重新创建图形,但您不必重新评估最初创建图形的函数或脚本。

PS:我不确定这个功能有多新。

答案 2 :(得分:0)

除了交换Position对象的axes属性外,您还可以交换Parent个对象的bar属性。这样做的好处是可以保持axes定位不变。

一个简单的例子:

function testcode

y1 = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
y2 = -y1;

h(1) = subplot(1, 2, 1);
b(1,:) = bar(y1);
h(2) = subplot(1, 2, 2);
b(2,:) = bar(y2);

swapbar(h, b, [1,2]);
end

function swapbar(axesobjects, barobjects, axesswap)
    set(barobjects(axesswap(1), :), 'Parent', axesobjects(axesswap(2)));
    set(barobjects(axesswap(2), :), 'Parent', axesobjects(axesswap(1)));
end

这里我创建了一个小辅助函数swapbar来交换两个轴。这根本不是一个强大的实现,但它可以很好地说明这个概念。

旧:

old

新:

yay