关于生成三个变量的 4 维图的问题

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

我有一个关于在 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;
plot matlab-figure 4d
1个回答
0
投票

当你定义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;

enter image description here

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