Compact way to plot data with relative colors and legend
    8 views (last 30 days)
  
       Show older comments
    
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 Comments
Accepted Answer
  Davide Masiello
      
 on 12 Oct 2022
        
      Edited: Davide Masiello
      
 on 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)
More Answers (1)
  Chunru
      
      
 on 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;
See Also
Categories
				Find more on Polar Plots in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



