Matlab 代码:矩阵数据互换后的三维散点图绘制

本文介绍了如何使用 Matlab 代码绘制三维散点图,其中涉及矩阵数据互换、点连接和文本标签添加等操作。

假设你之前将矩阵1和矩阵2的数据搞反了,可以使用以下代码来进行数据互换,并根据新的矩阵1和矩阵2中的数据连接 z 轴为零的点和 z 轴不为零的点。

示例代码:

% 设置文件名和sheet名
file = '混合表.xls';
 sheet1 = 'Sheet1';
 sheet2 = 'Sheet2';

% 读取第一个sheet内的坐标信息
[num1, txt1, raw1] = xlsread(file, sheet1);
x1 = num1(:, 1);
y1 = num1(:, 2);
z1 = num1(:, 3);
names1 = txt1(:, 4); % 假设第四列是点的名称

% 读取第二个sheet内的坐标信息
[num2, txt2, raw2] = xlsread(file, sheet2);
x2 = num2(:, 1);
y2 = num2(:, 2);
z2 = num2(:, 3);
names2 = txt2(:, 4); % 假设第四列是点的名称


% 绘制三维散点图
figure;
scatter3(x1, y1, z1, 'r', 'filled');
hold on;
scatter3(x2, y2, z2, 'b', 'filled');
xlabel('X');
ylabel('Y');
zlabel('Z');
title('网络空间负载配置图');
legend(sheet1, sheet2);
grid on;

% 绘制相同x和y坐标的点之间的虚线连接
for i = 1:length(x1)
    idx = find(x2 == x1(i) & y2 == y1(i));
    if ~isempty(idx)
        plot3([x1(i), x2(idx)], [y1(i), y2(idx)], [z1(i), z2(idx)], '--k');
    end
end

% 添加文本标签
for i = 1:length(x1)
    text(x1(i), y1(i), z1(i), names1{i}, 'Color', 'red', 'FontSize', 8);
end
for i = 1:length(x2)
    text(x2(i), y2(i), z2(i), names2{i}, 'Color', 'blue', 'FontSize', 8);
end

% 读取矩阵1的数据
matrix1 = xlsread('矩阵1.xlsx');

% 读取矩阵2的数据
matrix2 = xlsread('矩阵2.xlsx');

% 连接z轴为零的点
for i = 1:length(x1)
    for j = 1:length(x1)
        if matrix1(j, i) ~= 0
            plot3([x1(i), x1(j)], [y1(i), y1(j)], [z1(i), z1(j)], '--r');
        end
    end
end

% 连接z轴不为零的点
for i = 1:length(x2)
    for j = 1:length(x2)
        if matrix2(j, i) ~= 0
            plot3([x2(i), x2(j)], [y2(i), y2(j)], [z2(i), z2(j)], '--b');
        end
    end
end

请将 '矩阵1.xlsx' 和 '矩阵2.xlsx' 替换为你实际使用的矩阵文件路径。代码会读取互换后的矩阵数据,并根据新的矩阵1和矩阵2中的数据连接 z 轴为零的点和 z 轴不为零的点。连接的线条颜色分别为红色和蓝色。

请确保矩阵数据文件的格式正确,并且矩阵中的数据与代码中的索引和变量对应正确。根据你的实际数据和需求,对文件路径和索引进行适当的调整。

其他说明:

  • 代码假设矩阵1和矩阵2中的数据分别对应 z 轴为零的点和 z 轴不为零的点。
  • 可以根据需要修改代码中的颜色、线条样式和文本标签大小等参数。
  • 如果你需要连接不同坐标系中的点,需要根据实际情况修改代码中的索引和变量。

希望本文能帮助你使用 Matlab 代码绘制三维散点图,并实现矩阵数据互换和点连接功能。


原文地址: https://www.cveoy.top/t/topic/uw4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录