如何在Matlab中控制图像和颜色条的可视堆叠顺序? 我有6个图像,我使用子图在2 x 3网格上显示。我为每个图像添加了颜色条,但是一些颜色条出现在图像后面,使它们不可见。在我的示例中,属于图像3和5的颜色条(在子图命令中计数)出现在它们各自的图像后面。
我认为我不能使用轴子对象的顺序,因为每个轴显然只有一个子,即图像,而颜色条对象是图形的子对象(必须与其相同)相关轴)。
我也尝试了uistack(顶部用于彩条,底部用于图像),虽然它确实改变了外观,但最后,其他颜色条会在图像后面结束。似乎随机的是哪些,例如在图像上的uistack和属于子图5的颜色条之后,子图2的颜色条将突然出现在其图像后面。
PS我也尝试重新排序图中的孩子,但他们不会改变(即使画家渲染)
答案 0 :(得分:0)
这很奇怪:当我刚准备好MCVE时,问题没有重现,但我不知道有什么不同!也许Windows更新?无论如何,带有问题的原始输出显示在http://i.stack.imgur.com/LJVG2.png,并且准备好的示例输出看起来应该在http://i.stack.imgur.com/F1LMX.png。所以现在,没有问题......
代码是
function example()
I1=ones(96,96);
I2=ones(96,96)+1;
I3=ones(96,96)+2;
I4=ones(96,96)+3;
I5=ones(96,96)+4;
I6=ones(96,96)+5;
pos=[10 10 12 9];
fig=figure
fig.Units='centimeters';
fig.Position=pos;
set(gcf,'PaperPositionMode','auto');
h(1)=veryTightSubPlot(2,3,1);
imshow(I1,[0,6]);
h(2)=veryTightSubPlot(2,3,2);
imshow(I2,[0,6]);
h(3)=veryTightSubPlot(2,3,3);
imshow(I3,[0,6]);
h(4)=veryTightSubPlot(2,3,4);
imshow(I4,[0,6]);
h(5)=veryTightSubPlot(2,3,5);
imshow(I5,[0,6]);
h(6)=veryTightSubPlot(2,3,6);
imshow(I6,[0,6]);
V=[0.315,0.65,0.97,0.315,0.65,0.97,0.315,0.65,0.97];
for i=1:6
p=get(h(i),'Position');
c=colorbar(h(i),'Axislocation','in','FontSize',8);
c.Color=[0,0,0];
cp=c.Position;
h(i).Position=p;
cp(3)=cp(3)/2;
c.Position=[V(i) cp(2:4)];
end
colormap(parula);
end
function [ax] = veryTightSubPlot(rows, columns,index)
ix = mod(index-1,columns);
iy = floor((index-1)/columns);
pos = [ix/columns,1-(iy+1)/rows,1/columns,1/rows];
ax = axes('ActivePositionProperty','outerposition','Position',pos);
end