MATLAB 读取 Excel 文件并绘制三维散点图
MATLAB 读取 Excel 文件并绘制三维散点图
本代码示例展示了如何使用 MATLAB 读取 Excel 文件中的坐标信息,并绘制三维散点图,同时连接相同 x 和 y 坐标的点,并添加文本标签。
% 设置文件名和sheet名
file = '混合表.xls';
sheet1 = 'Sheet1';
sheet2 = 'Sheet2';
% 读取第一个sheet内的坐标信息
[num1, txt1, raw1] = xlsread(file, sheet1);
x1 = num1(:, 2);
y1 = num1(:, 3);
z1 = num1(:, 4);
names1 = txt1(:, 1); % 假设第四列是点的名称
% 读取第二个sheet内的坐标信息
[num2, txt2, raw2] = xlsread(file, sheet2);
x2 = num2(:, 2);
y2 = num2(:, 3);
z2 = num2(:, 4);
names2 = txt2(:, 1); % 假设第四列是点的名称
% 绘制三维散点图
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
错误分析:
根据你提供的代码和错误信息,问题出现在读取第二个sheet内的坐标信息时的索引超出数组边界。这可能是由于第二个sheet内的坐标信息的列数少于4导致的。请确保混合表.xls文件的Sheet2中的坐标信息真正位于第2、第3和第4列。如果坐标信息的列数不同,请相应地修改代码。
其他注意事项:
- 还请注意确保
Sheet1和Sheet2中的列数和行数匹配,以避免在处理数据时出现其他索引错误。 - 代码中假设第四列是点的名称,请根据实际情况修改代码。
- 可以根据需要调整散点图的颜色、大小、线型等参数。
- 可以使用其他 MATLAB 绘图函数来进一步美化图形。
原文地址: https://www.cveoy.top/t/topic/rvd 著作权归作者所有。请勿转载和采集!