Setting marker and colour in gscatter by the categorical group string
57 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
Subhadeep Koley
2019-11-7
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 个评论
Derek Hamilton
2019-11-7
2 个评论
Subhadeep Koley
2019-11-7
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
2020-8-19
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
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!