我有一个关于在 MATLAB 中创建 4D 图的问题,其中三个参数表示为 $\lambda_2$ 在 x 轴上,$\lambda_3$ 在 y 轴上,$\lambda_1$ 在 z 轴上-轴。此外,颜色代表第四维的 NMI 值。
附件中,您会找到我想重现的情节。有人可以提供 MATLAB 代码来创建它吗?
提前感谢您的帮助!
我尝试在 MATLAB 中创建 4D 散点图,以可视化这三个参数($\lambda_1、\lambda_2、\lambda_3$)和输出变量 NMI 之间的关系。我期望看到一个分层散点图,其中每一层对应于不同的 $\lambda_1$ 值,其中 $\lambda_2$ 在 x 轴上,$\lambda_3$ 在 y 轴上,$\lambda_1$ 在 z 轴上轴和代表 NMI 值的颜色。然而,最初,我在执行这个计划时遇到了问题。
这是我使用的代码:
lambda1 = [0, 1e-6, 1e-5, 1e-4, 1e-3]; % Z-axis
lambda2 = [0, 0.01, 0.1, 1, 10, 100, 1000]; % X-axis
lambda3 = [0, 0.5, 0.75, 1, 1.25, 1.5, 2]; % Y-axis
NMI = rand(length(lambda3), length(lambda2), length(lambda1));
figure;
hold on;
colormap('turbo');
scatterSize = 50; % Size of scatter points
for i = 1:length(lambda1)
% Extract layer data
[L2, L3] = meshgrid(lambda2, lambda3);
layerNMI = NMI(i, :, :);
x = log10(L2(:)); % \lambda2 (log scale)
y = log10(L3(:)); % \lambda3 (log scale)
z = lambda1(i) * ones(size(x)); % \lambda1
c = layerNMI(:); % NMI values as colors
scatter3(x, y, z, scatterSize, c, 'filled');
end
xlabel('\lambda_3 (log_{10})');
ylabel('\lambda_2 (log_{10})');
zlabel('\lambda_1');
colorbar;
caxis([0, 1]);
title('3D Parameter Grid with NMI');
grid on;
view(3);
hold off;
当你定义layerNMI时
layerNMI = NMI(i, :, :);
索引第一个维度没有意义,因为lambda1是NMI中的第三个维度:NMI = rand(length(lambda3), length(lambda2), length(lambda1));
。
要修复代码,请将其更改为
layerNMI = NMI(:, :, i);
lambda1 = [0, 1e-6, 1e-5, 1e-4, 1e-3]; % Z-axis
lambda2 = [0, 0.01, 0.1, 1, 10, 100, 1000]; % X-axis
lambda3 = [0, 0.5, 0.75, 1, 1.25, 1.5, 2]; % Y-axis
NMI = rand(length(lambda3), length(lambda2), length(lambda1));
figure;
hold on;
colormap('turbo');
scatterSize = 50; % Size of scatter points
for i = 1:length(lambda1)
% Extract layer data
[L2, L3] = meshgrid(lambda2, lambda3);
layerNMI = NMI(:, :, i);
x = log10(L2(:)); % \lambda2 (log scale)
y = log10(L3(:)); % \lambda3 (log scale)
z = lambda1(i) * ones(size(x)); % \lambda1
c = layerNMI(:); % NMI values as colors
scatter3(x, y, z, scatterSize, c, 'filled');
end
xlabel('\lambda_3 (log_{10})');
ylabel('\lambda_2 (log_{10})');
zlabel('\lambda_1');
colorbar;
caxis([0, 1]);
title('3D Parameter Grid with NMI');
grid on;
view(3);
hold off;