最近写论文需要用matlab做图。
首先创建四个三维零矩阵,深度自定。
x_sis = zeros(12,12,12);
y_sis = zeros(12,12,12);
z_sis = zeros(12,12,12);
score_sis = zeros(12,12,12);
然后给三维坐标赋值。(:,:,:)括号中三个位置分别是行,列,页。:代表所有行列页都赋值。
x_sis(:,1,:) = 0.1;
x_sis(:,2,:) = 1;
然后从csv中读取数值并给第四维赋值。csvread('文件名', 1, 2, [1 2 3 4])表示从第一行第二列到第三行第四列读值,也就是读一个矩形,返回一个列表。其中前面的1, 2和中括号里的1, 2要一样。这里每次循环只需要一个单元格的值,所以中括号里是重复的。
b = 0;
for u=1:12
for i=1:12
for z=1:12
score_sis(u,i,z) = csvread('logsis.csv', b, 3, [b 3 b 3]);
b = b+1;
end
end
end
然后绘图,slice表示切面,view表示视图角度
xslice = [50 100];
yslice = 100;
zslice = ([0.1 50]);
slice(x_sis, y_sis, z_sis, score_sis, xslice, yslice, zslice)
ylim([0.1 100])
view(-34,24)
最后调整色条范围。
cb = colorbar;
cb.Label.String = 'Score';
lim = caxis;
caxis([1.1 1.4])
最终结果: