Grouped bar graph with scatter plot

22 visualizaciones (últimos 30 días)
CR
CR el 18 de Jun. de 2020
Editada: Adam Danz el 23 de Jun. de 2020
This code is close but getting the SEM over the first and last bars. Does anyone have any suggestions for the scatter code?
model_series=[nanmean(tmpdata1aS_Mean) nanmean(all_dyn1l1p0aS_Pre); nanmean(tmpdata1aS_MeanP) nanmean(all_dyn1l1p0aS_Post)];
model_error=[tmpdata1aS_SEM dyn1l1p0aS_PreSEM; tmpdata1aS_SEMP dyn1l1p0aS_PostSEM];
model_scatter=[tmpdata1aS_Mean all_dyn1l1p0aS_Pre; tmpdata1aS_MeanP all_dyn1l1p0aS_Post];
b=bar(model_series, 'grouped');
hold on
ngroups = size(model_series, 1);
nbars = size(model_series, 2);
groupwidth = min(0.8, nbars/(nbars + 1.5));
% Based on barweb.m by Bolu Ajiboye from MATLAB File Exchange
for i = 1:nbars
% Calculate center of each bar
x = (1:ngroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*nbars);
errorbar(x, model_series(:,i), model_error(:,i), 'k', 'linestyle', 'none');
scatter(x(i).* ones(length(model_scatter(i,:)),1),model_scatter(i,:),'*')
end
hold off
Thoughts?
  2 comentarios
Adam Danz
Adam Danz el 18 de Jun. de 2020
Editada: Adam Danz el 18 de Jun. de 2020
"Does anyone have any suggestions for the scatter code?"
Could you describe what's wrong and what you'd like to see? It would also be helpful to know the size of your variables.
CR
CR el 18 de Jun. de 2020
Yes. I would like the SEMs (asteriks) in model_scatter to be centered over the corresponding bar means (in model_series), similar to the location of the errorbars. There are 5-6 data points in each. Does this make sense?

Iniciar sesión para comentar.

Respuestas (1)

Adam Danz
Adam Danz el 18 de Jun. de 2020
Editada: Adam Danz el 18 de Jun. de 2020
Here are some demo you can follow to get the x-coordinate of the center of each bar. Any one of them should be sufficient.
Use the x-coordinates to specify the location of the scatter points.
  3 comentarios
Adam Danz
Adam Danz el 18 de Jun. de 2020
Editada: Adam Danz el 18 de Jun. de 2020
It looks like you're looping over the bar-groups. If 'x' defines the center of each bar within group i, then x would have 2 values since there are two groups. model_scatter(i,:) is a vector. How do you decide which bar those points are plotted to?
Don't forget we can't run your code without inputs.
Adam Danz
Adam Danz el 18 de Jun. de 2020
Editada: Adam Danz el 23 de Jun. de 2020
You probably don't need a loop. Why not just compute all x-values to all bars in 1 line of code, then add the errorbars in 1 line of code, then add the scatter points in 1 line of code? Why loop over the bar-groups. I think that complicates things.

Iniciar sesión para comentar.

Categorías

Más información sobre Errorbars en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by