Как создать трехмерный точечный график с разными цветами для меток в MATLAB? - PullRequest
0 голосов
/ 07 декабря 2018

Я использовал TSNE в MATLAB для уменьшения размерности больших данных.Мне удалось сгенерировать диаграмму рассеяния для TSNE в двух измерениях, которая показывает метки кластера разными цветами для каждой метки, но я не могу сделать это в 3D.Ссылаясь на https://uk.mathworks.com/help/stats/tsne.html,, я использовал следующий синтаксис: - Где merged_data_all - это таблица 21392x1974 с последним столбцом с именем FunctionalGroup, содержащим разные метки (аналогично меткам видов Fisheriris в примере Mathworks на tsne).Y2 - это трехмерная переменная, которую я успешно смог сгенерировать с размерами 21392 x 3 double.

figure
v = double(categorical(merged_data_all.FunctionalGroup));
c = full(sparse(1:numel(v),v,ones(size(v)),numel(v),3));
scatter3(Y2(:,1),Y2(:,2),Y2(:,3),15,c,'filled')
title('3-D Embedding')
view(-50,8)

Когда я использую этот код, я получаю ошибку "Error using sparse- Index exceeds array bounds". Я даже пытался использовать измененныйверсия кода и что-то в этом роде

scatter3(Y(:,1), Y(:,2),Y(:,3),merged_data_all.FunctionalGroup)

В этом случае я получаю ошибку "Error using scatter3- Input arguments must be numeric, datetime or categorical". Я совершенно сбит с толку относительно того, как я могу построить трехмерный график рассеяния с 14 различными цветами (для 14 типов различных меток, которые у меня есть в моем столбце FunctionalGroup (merged_data_all).Любая помощь в этом отношении будет принята с благодарностью.Спасибо

...