我期待这样做,但是我错过了MATLAB帮助文件中的#34;句柄向量#34;
LEGEND(M),其中M是字符串矩阵或字符串数组,
LEGEND(H,M)其中H也是线和补丁的句柄向量 的工作原理。
myone = ones(20,1);
mytwo = ones(20,1)+1;
rows = vertcat(myone,mytwo);
mylabels = {'Alpha', 'Beta'};
figure
grouplabels = mylabels(rows);
h = scatter3(rand(40,1),rand(40,1),rand(40,1),20,rows,'filled'), ...
view(-33,22)
legend(handle(h),grouplabels)
xlabel('X')
ylabel('Y')
zlabel('Z')
答案 0 :(得分:1)
您的代码存在的问题是h
的输出scatter3
是一个句柄。它不是一个与数据大小相同的句柄数组(这是您在尝试设置40x1标签数组时所暗示的,忽略不相关的handle
包装器)。它甚至不是一个人可能想到的两个手柄的阵列(每种颜色一个)。所以你不能像这样设置传奇。一种方法是一次绘制一种颜色的所有点:
hFig = figure();
axh = axes('Parent', hFig);
hold(axh, 'all');
h1 = scatter3(rand(20,1),rand(20,1),rand(20,1),20,'b','filled');
h2 = scatter3(rand(20,1),rand(20,1),rand(20,1),20,'r','filled');
view(axh, -33, 22);
grid(axh, 'on');
legend(axh, [h1,h2], {'Alpha', 'Beta'});