Compact way to plot data with relative colors and legend
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Is there any way to plot data with relative colors and legend in a more compact way than this one ?
% Input
a = {'marathon', 1, 4;
'bank holiday', 3, 6;
'bank holiday', 2, 1;
'concert', 0, 4;
'regatta', 1, 9;
'regatta', 4, 5;
'regatta', 1, 0;
'local fair', 6, 3}
% Non-compact output (and plot)
number_of_colors = length(unique(a(:,1)));
colors = jet(number_of_colors);
[~,~,idx] = unique(a(:,1));
hold on
for i = 1 : length(a)
plot(cell2mat(a(i,2)),cell2mat(a(i,3)),'o',...
'markersize',10,...
'markerfacecolor',colors(idx(i),:),...
'markeredgecolor',colors(idx(i),:),...
'DisplayName',a{i,1});
end
legend(legendUnq())
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1153788/image.png)
0 commentaires
Réponse acceptée
Davide Masiello
le 12 Oct 2022
Modifié(e) : Davide Masiello
le 12 Oct 2022
a = {'marathon', 1, 4;
'bank holiday', 3, 6;
'bank holiday', 2, 1;
'concert', 0, 4;
'regatta', 1, 9;
'regatta', 4, 5;
'regatta', 1, 0;
'local fair', 6, 3};
[u,v,z] = unique(a(:,1));
clrs = jet(length(u));
gscatter([a{:,2}],[a{:,3}],string(a(:,1)),clrs,'.',30)
Plus de réponses (1)
Chunru
le 12 Oct 2022
% Input
a = {'marathon', 1, 4;
'bank holiday', 3, 6;
'bank holiday', 2, 1;
'concert', 0, 4;
'regatta', 1, 9;
'regatta', 4, 5;
'regatta', 1, 0;
'local fair', 6, 3};
a = cell2table(a);
a.a1 = categorical(string(a.a1))
% Non-compact output (and plot)
s = scatter(a,'a2','a3','filled','ColorVariable','a1');
g = categories(a.a1);
h = colorbar;
h.YTick = [1:length(g)]; h.YTickLabel = g;
Voir également
Catégories
En savoir plus sur Data Distribution Plots 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!