Setting marker and colour in gscatter by the categorical group string
61 views (last 30 days)
Show older comments
I have datasets that will always have a category attached (species of animal) and I want to be able to define that each species has a different marker type. I will likely use this to also set the colour by a second group – the site from where the animals came.
I have seen code for having Matlab use a different colour for each group, but not a different marker.
More importantly, I want to be able to define these so they are always the same (cattle are always circles and horses are always squares, etc).
0 Comments
Answers (2)
Subhadeep Koley
on 7 Nov 2019
Hi, you can refer to the example code below, which plots the height and weight of various animals grouped by species and country of origin. (Use the attached demoDataMultiScattered.mat file)
% Load the demo data
load demoDataMultiScattered.mat;
% Create grouping variable 'g'
g = {country, species};
% Declare colors and markers
colors = 'rgbcmyk'; markers = 'hsdp';
% Plot the data
figure('Color','w');
gscatter(height,weight, g,colors,'hsdp',8);
legend('Location','northeastoutside');
title('Multi Grouped Scatter Plot');
xlabel('Height (in cm)');
ylabel('Weight (in Kilograms)');
Hope this helps!
0 Comments
Derek Hamilton
on 7 Nov 2019
2 Comments
Subhadeep Koley
on 7 Nov 2019
Yes you can use loop. But plotting using a loop is inefficient. As, it generates a huge number of individual graphic objects instead of just one. You can do that without using any loop also.
Refer the code below
% Load the demo data
load demoDataMultiScattered.mat;
% Create grouping variable 'g'
g = {country, species};
% Declare colors and markers
colors = 'rrrrggggbbbbmmmm'; markers = 'hsdp';
% Plot the data
figure('Color','w');
gscatter(height,weight, g, colors, markers, 8);
legend('Location','northeastoutside');
title('Multi Grouped Scatter Plot');
xlabel('Height (in cm)');
ylabel('Weight (in Kilograms)');
Hope this helps!
Marcus Leiwe
on 19 Aug 2020
I realise this is jumping on an old question but what if in one of the cases that group is now empty. I find that gscatter is exluding the group
See Also
Categories
Find more on Animation 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!