Compact way to plot data with relative colors and legend
    8 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
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())

0 Commenti
Risposta accettata
  Davide Masiello
      
 il 12 Ott 2022
        
      Modificato: Davide Masiello
      
 il 12 Ott 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)
Più risposte (1)
  Chunru
      
      
 il 12 Ott 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;
Vedere anche
Categorie
				Scopri di più su Polar Plots in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

