Subplot的中心图在Matlab中奇怪地缩放

时间:2013-08-14 06:57:27

标签: matlab plot visualization subplot

我正在将来自9个不同来源的数据绘制到Matlab中的子图中。在这里你可以看到我的数字:

enter image description here

每行代表不同条件下某个变量的结果。所以第1行是变量1,第二行是变量2等。无论如何,正如你从图片中看到的那样,与第二行中的其他两个相比,中心绘图奇怪地缩放。

我使用的代码包括使用以下命令:subplot(3,3,i), imagesc(data), colorbar, colormap(flipud(gray)), title('sometitle'), caxis([limits])

我尝试使用ylim([0.5 3.5])设置y限制来修复中心图,但这没有效果......当我尝试ylim([0 4])时发生了这种情况:

enter image description here

请注意,每行图中的数据具有相同的大小矩阵。在第1行:7×7矩阵,第2行:3×3矩阵和第3行:4×4矩阵。

如何解决此问题? :)

感谢您的帮助!

更新:

以下是我尝试使用命令后发生的事情:

subplot(3,3,5)
imagesc(data)
axis square
colorbar

enter image description here

这是一个最低限度的工作示例:(显然,它没有给出完全相同的结果,但仍然存在类似的问题):

data11 = rand(7,7);
data12 = rand(7,7);
data13 = rand(7,7);
data21 = rand(3,3);
data22 = rand(3,3);
data23 = rand(3,3);
data31 = rand(4,4);
data32 = rand(4,4);
data33 = rand(4,4);
subplot(3,3,1)
imagesc(data11)
colorbar
colormap(flipud(gray))
title('title')
subplot(3,3,2)
imagesc(data12)
colorbar
colormap(flipud(gray))
title('title')
subplot(3,3,3)
imagesc(data13)
colorbar
colormap(flipud(gray))
title('title')
subplot(3,3,4)
imagesc(data21)
colorbar
title('title')
subplot(3,3,5)
imagesc(data22)
colorbar
title('title')
subplot(3,3,6)
imagesc(data23)
colorbar
title('title')
subplot(3,3,7)
imagesc(data31)
colorbar
title('title')
subplot(3,3,8)
imagesc(data32)
colorbar
title('title')
subplot(3,3,9)
imagesc(data33)
colorbar
title('title')

你应该得到这样的东西:

enter image description here

请注意,我单独输入了命令(命令+输入,命令+输入等)然后我得到了问题,即你在这篇文章中看到的图片。如果我复制并粘贴整个代码(整个代码+输入)我没有遇到任何问题...

1 个答案:

答案 0 :(得分:1)

我首先尝试设置' ActivePositionProperty'每个轴到'位置'有关详细信息,请参阅axes properties上的文档。

 h1 = subplot(3,3,1);
 set(h1,'ActivePositionProperty','Position');

 h2 = subplot(3,3,2);
 set(h2,'ActivePositionProperty','Position');

如果不起作用,则需要手动为每个图设置位置属性。

 Margin = 0.1
 Width = 1 - 4*Margin;
 Height = 1 - 4*Margin;
 Left = [ (Margin) (2*Margin+Width) (3*Margin+2*Width) ];
 Bottom = [ (Margin) (2*Margin+Height) (3*Margin+2*Height) ];

 h1 = subplot(3,3,1);
 set(h1,'Position', [Left(1) Bottom(3) Width Height]);

 h2 = subplot(3,3,2);
 set(h1,'Position', [Left(2) Bottom(3) Width Height]);

 h3 = subplot(3,3,2);
 set(h1,'Position', [Left(3) Bottom(3) Width Height]);

 h4 = subplot(3,3,2);
 set(h1,'Position', [Left(1) Bottom(2) Width Height]);

 %Etc