matlab中的imagesc()没有显示相等的轴

时间:2012-07-07 22:51:16

标签: image matlab plot scale axis

我使用以下代码行来绘制图像:

for t=1:subplotCol
    subplot(subplotRow,subplotCol,t)
    imagesc([1 100],[1 100],c(:,:,nStep*t));
    colorbar
    xlabel('X-axis')
    ylabel('Y-axis')
    title(['Concentration profile at t_{',num2str(nStep*t),'}'])

    subplot(subplotRow,subplotCol,subplotCol+t)
    hold on;
    plot(distance,gamma(:,1,t),'-ob');
    plot(distance,gamma(:,2,t),'-or');
    plot(distance,gamma(:,3,t),'-og');
    xlabel('h');ylabel('\gamma (h)');
    legend(['\Theta = ',num2str(theta(1))],...
        ['\Theta = ',num2str(theta(2))],['\Theta = ',num2str(theta(3))]);
end

我得到以下带有图像的子图:

enter image description here

如您所见,第一行中的图像现在在X轴和Y轴上均匀缩放(Y轴比X轴长),即使第一行上的每个图像的图像矩阵大小为100x100。

有人可以帮助我解决第一行中的图像看起来像正方形而不是我目前得到的矩形。感谢。

2 个答案:

答案 0 :(得分:5)

使用轴的dataAspectRatio属性,并将其设置为[1 1 1]

%# create a test image
imagesc(1:10,1:10,rand(10))

enter image description here

%# you should use the handle returned by subplot
%# instead of gca
set(gca,'dataAspectRatio',[1 1 1])

enter image description here

答案 1 :(得分:1)

另一种方法是使用命令axis equal

关于不同对象的大小,您可以设置图上每个轴的确切位置,例如第一次使用时: subplot(2,2,1); set(gca,'Position',[0.05 0.05 0.4 0.4])