增加切片之间的间隔

问题描述 投票:0回答:1

我正在尝试在20个快照中说明2D矩阵。我使用slice对其进行了绘制,但是除了顶部矩阵之外,其他都看不到。有什么方法可以增加切片之间的距离,以便能够看到每个平面?也有人可以建议一种替代方法来显示4x8t=1:20矩阵的时间演化吗?这是我用来绘制数据的小代码:

T2=20;
Xc = zeros(8,4,T2);
for j = 1:T2
    Xc(:,:,j) = mdp2(j).X{1};
end
hs = slice(Xc,[],[],1:T2) ;
lightangle(-45,45);
view([-25 30]);
xticks(linspace(0,20,41));
axis on;

如何在此处更改刻度线和轴标签? enter image description here预先感谢

matlab matrix slice
1个回答
1
投票

您的代码中包含一些随机数据:

T2=20;
Xc = zeros(8,4,T2);
for j = 1:T2
    Xc(:,:,j) = rand(8,4);
end
hs = slice(Xc,[],[],1:T2) ;
lightangle(-45,45);
view([-25 30]);
xticks(linspace(0,20,41));
axis on;

Original image

正如@CrisLuengo所提到的,这是DataAspectRatio属性的原样(或使用函数daspect(),请参阅here,以获取此信息):

h = gca;
h.DataAspectRatio
ans =

                         1          2.33333333333333          6.66666666666667
% Or use function daspect()

来自MATLAB Documentation

daspect([1 2 3])指定沿着一个单位的长度x轴等于沿y轴的两个单位和三个单位的长度沿z轴。

减小h.DataAspectRatio[3]会增加切片间隙。例如:

set(h, 'DataAspectRatio', [1 2.333 2])

使图像像这样:

Graph with extended Z-axis

我还将添加一些透明性以使数据可见:

alpha(h, 0.7);

Transparent Graph

如何在此处更改刻度和标签轴

使用轴属性或功能XTickYTickZTick。另外,通过view()来更改摄像机的视线,例如

xticks(1:4);
view(30, 20);

给出:

Changed view

© www.soinside.com 2019 - 2024. All rights reserved.