我是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的立方体,并通过第四维定义颜色,使整个空间被填满吗?
另一个问题是颜色条的标签与颜色条中显示的数字过于接近并重叠。我可以设置条形图标签的位置,使其稍微远离一些吗?
非常感谢。
surf
。可能是你想要的。只需注意它将使用由meshgrid
创建的体积数据,因此在使用之前可能需要重新格式化数据。 颜色条的位置可以通过pos = get(cb,'position');
和set(cb,newpos);
进行更改。 - MinF