使用scatter3函数在空间中填充3D立方体。

3

我是MATLAB的业余用户,希望能够绘制一张4D彩色图,其中颜色代表第四个维度。我尝试使用scatter3函数如下:

fid = fopen('abc.dat','r');
datacell = textscan(fid, '%f%f%f%f'); 
fclose(fid);

all_data = cell2mat(datacell); %converted into a matrix 

boxx = all_data(:,1);
boxy = all_data(:,2);
boxz = all_data(:,3);
disden = all_data(:,4); %color depends on the value of disden

scatter3(boxx,boxy,boxz,400,disden,'filled') 

xlabel('Box x')
ylabel('Box y')
zlabel('Box z')
cb = colorbar;      % create  the colorbar
set(get(cb,'title'),'string','Dislocation Density(m^{-2})'); % label colobar

虽然它能工作,但我希望在上述情况下整个空间都被立方体填满而不是只有点。在上述情况下仅使用了点,因此即使它们的大小可以设置,它们仍然无法填满空间。我的x、y、z值都是整数,我可以使用大小为1x1x1的立方体,并通过第四维定义颜色,使整个空间被填满吗?
另一个问题是颜色条的标签与颜色条中显示的数字过于接近并重叠。我可以设置条形图标签的位置,使其稍微远离一些吗?
非常感谢。

1
看一下surf。可能是你想要的。只需注意它将使用由meshgrid创建的体积数据,因此在使用之前可能需要重新格式化数据。 颜色条的位置可以通过pos = get(cb,'position');set(cb,newpos);进行更改。 - MinF
1
我有三个关于绘制4D数据或类似立方体的问题的答案。请查看以下链接:https://dev59.com/konca4cB1Zd3GeqP5AZn#29233108,https://stackoverflow.com/questions/31828064/constructing-voxels-of-a-3d-cube-in-matlab/31829681#31829681和https://dev59.com/iYbca4cB1Zd3GeqPVGSF#27660039。 - Ander Biguri
1个回答

0
如果x和y不均匀,即在每个网格交点处具有值,则无法覆盖整个体积。您需要对输入数据进行插值。
请查看“非均匀采样数据的曲面图”示例此处

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接