MATLAB giving error while trying to create a 3D scatter plot: Error using sparse (Index exceeds array bounds)
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
hello_world
le 17 Juil 2018
Réponse apportée : Walter Roberson
le 18 Juil 2018
I was following the MathWorks example: https://www.mathworks.com/help/stats/tsne.html#bvkcm24-1 which works fine for fisheriris dataset.
load fisheriris
[Y2,loss2] = tsne(meas,'Algorithm','exact','NumDimensions',3);
figure
v = double(categorical(species));
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)
However, when I change a dataset to something else, it gives error:
Error using sparse
Index exceeds array bounds.
I have the following:
c = full(sparse(1:numel(v), v, ones(size(v)), numel(v), 3));
where numel(v) = 9339, size(v) = 9339 x 1 double
Here the last argument is digit '3' which I followed from MathWorks example in link above. I want to reduce it to 3 dimensions and create a 3D plot same as in that example.
In my case v has 25 classes unlike 3 in Mathworks exaple. So I changed it as follows:
c = full(sparse(1:numel(v), v, ones(size(v)), numel(v), 25));
This time there is no error in c, but I get the error below:
Error using scatter3 (line 109)
C must be a single color, a vector the same length as X, or an M-by-3 matrix.
10 commentaires
Walter Roberson
le 18 Juil 2018
I would prefer you did not close the question, as it might be of use to other people.
To create a colormap array, just assign to it.
mycmap = [0 0 1;
0 0 .5;
0 0 0;
0 .5 0;
0 .5 .5;
0 .5 1;
0 1 1;
0.5 1 1;
0.5 1 0.5;
0.5 1 0;
0.5 0.5 0;
0.5 0 0 ];
colormap(mycmap)
You might be interested in colormapeditor(), or in https://www.mathworks.com/matlabcentral/fileexchange/28943-color-palette-tables-cpt-for-matlab
Réponse acceptée
Walter Roberson
le 18 Juil 2018
Copying from comments:
scatter3(Y2(:,1), Y2(:,2), Y2(:,3), 15, v(:), 'filled');
colormap( jet(numel(unique(v))) )
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Graphics Object Programming dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!