How to change the colour of the markers on a scattered graph?

Hi all,
I have a data set which is 5 * 1 double (BMC_14_whole_sum) which is like 8.5, 8.8, 9.3 etc and I am plotting that in a boxplot and scatter graph to show where exactly the markers are. Below is what I have tried so far:
BMC_14_whole_sum = sum(BMC_14_whole,2);
boxplot(BMC_14_whole_sum)
hold on
scatter(ones(size(BMC_14_whole_sum)).*(1+(rand(size(BMC_14_whole_sum))-0.5)/10),BMC_14_whole_sum, 'filled')
hold off
title('BMC Whole W14')
I have attached my .mat file. The image above is something similar to what I get. I would like to have those 5 different markers to have 5 different colours and possibly 5 different marker styles as well. How can I do that? Also, if there is a simpler codes to plot the scatter graph rather than using (ones(size(BMC_14_whole_sum)).*(1+(rand(size(BMC_14_whole_sum))-0.5)/10),BMC_14_whole_sum), please suggest me too.
Thank you so much for the help

 Accepted Answer

Try this —
LD = load('aw_w14_scans.mat');
BMC_14_whole = LD.BMC_14_whole;
BMC_14_whole_sum = sum(BMC_14_whole,2);
boxplot(BMC_14_whole_sum)
hold on
scatter(ones(size(BMC_14_whole_sum)).*(1+(rand(size(BMC_14_whole_sum))-0.5)/10),BMC_14_whole_sum, [], (1:numel(BMC_14_whole_sum)), 'filled')
colormap(jet)
hold off
title('BMC Whole W14')
The colours are defined here by ‘(1:numel(BMC_14_whole_sum))’. Choose whatever colormap you want.
There is nothing similar to colororder for markers, so changing the markers would require a loop.
mv = 'psdo^';
cm = colormap(jet(numel(BMC_14_whole_sum)))
xv = ones(size(BMC_14_whole_sum)).*(1+(rand(size(BMC_14_whole_sum))-0.5)/10);
yv = BMC_14_whole_sum;
figure
boxplot(BMC_14_whole_sum)
hold on
for k = (1:numel(BMC_14_whole_sum))
scatter(xv(k), yv(k), [], cm(k,:), 'filled', 'Marker',mv(k))
end
hold off
title('BMC Whole W14')
.

6 Comments

Hey, I have another question.
If I have another set of data that is 6*4 double instead of 5*4 double like BMC_14_whole, what should I change to to show 6 markers on the graph?
I am getting the error below.
Index exceeds the number of array elements (5).
Nothing in your code or my code specifies a value of 5 for any parameter.
Most likely, all you need to do is to replace ‘BMC_14_whole’ with whatever variable you are currently working with.
.

Sign in to comment.

More Answers (2)

I don't think I understood your question completely. Please do attach sample data (probably in a .mat file) and your complete code. But I picked a line, and trying to answer that.
Answering this question:
" I can't seem to find a way. I would like to have 5 different markers to have 5 different colours. How can I do that?"
x = linspace(0,1*pi,200);
y = cos(x) + rand(1,200);
cols={'r','b','g','m','k'}; % If you want random colors, you can just simply generate RGB random numbers using randi commmand
markers={'d','o','+','^','*'};
for index=1:5
scatter(x,sin(x*index),cols{index},markers{index})
hold on
end
legend(strcat('Sin ',{' '},string([1:5]),'x'),'box','off','location','best')

3 Comments

Hi Ankur,
Thanks for helping me with my problem.
I have edited the original post with .mat file in the attachment and I hope you understand it better with the updated post.
Can you help me?
@Star Strider properly answered your question. I don't want to repeat the code. Refer to his answer.

Sign in to comment.

See the "Vary Circle Color" and "Fill the Markers" examples on the documentation page for the scatter function.

Categories

Products

Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!