关于matlab中scatter3的图例

时间:2016-05-17 22:09:16

标签: matlab matlab-figure

我期待这样做,但是我错过了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')

enter image description here

1 个答案:

答案 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'});

enter image description here