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

 Respuesta aceptada

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 comentarios

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!
.

Iniciar sesión para comentar.

Más respuestas (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 comentarios

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!

Iniciar sesión para comentar.

Steven Lord
Steven Lord el 14 de Jul. de 2021
See the "Vary Circle Color" and "Fill the Markers" examples on the documentation page for the scatter function.

Categorías

Más información sobre Discrete Data Plots en Centro de ayuda y File Exchange.

Productos

Versión

R2019b

Preguntada:

el 13 de Jul. de 2021

Comentada:

el 15 de Jul. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by