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

 Akzeptierte Antwort

Star Strider
Star Strider am 14 Jul. 2021
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 Kommentare

Thank you for helping me!
As always, my pleasure!
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.
.
oh alright thank you!
As always, my pleasure!
.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (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 Kommentare

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.
Alright thank you Ankur!

Melden Sie sich an, um zu kommentieren.

Steven Lord
Steven Lord am 14 Jul. 2021

0 Stimmen

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

Kategorien

Produkte

Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by