multiple histogram color scheme

41 vues (au cours des 30 derniers jours)
Maggie liu
Maggie liu le 14 Juil 2021
Commenté : Star Strider le 14 Juil 2021
Hi,
I'm trying to plot multiple histograms on one plot, but I would like to have the overlapped bits shown as the oringal color (currently I have faceAlpha set to 0.3, so the colors are all mixed together when they overlap).
How can I do this? thanks!
This is what I currently have
hold on
h1 = histogram(data1,Edges,...,'EdgeColor',[0 0.4470 0.7410],...
'FaceColor',[0 0.4470 0.7410],'FaceAlpha',0.3,'LineWidth',1.5);
h2 = histogram(data2,Edges,...,'EdgeColor',[0.4940 0.1840 0.5560],...
'FaceColor',[0.4940 0.1840 0.5560],'FaceAlpha',0.3,'LineWidth',1.5);
h3 = histogram(data3,Edges,...,'EdgeColor',[0.4660 0.6740 0.1880],...
'FaceColor',[0.4660 0.6740 0.1880],'FaceAlpha',0.3,'LineWidth',1.5);
  2 commentaires
dpb
dpb le 14 Juil 2021
"plot multiple histograms on one plot, but I would like to have the overlapped bits shown as the oringal color"
I don't follow precisely what you envision here -- what is "original" color defined to be--you have a specific color for each of the three histograms, which one is the "original" one?
Maggie liu
Maggie liu le 14 Juil 2021
Modifié(e) : Maggie liu le 14 Juil 2021
@dpb sorry for not explaining this clearly.
What I'm thinking was, suppose for a particular bar, data 1(blue) > data 2(yellow) > data3(green). I would like the bar to look like blue on top of yellow on top of green, instead of all the colors blending together due to my face alpha setting (the reason why I've set faceAlpha=0.3 is so that data beneath can actually be visible)
I hope this diagram helps explain things...

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 14 Juil 2021
Modifié(e) : Star Strider le 14 Juil 2021
Since all the edges appear to be the same, it might be easiest to get the outputs of the histogram calls, however instead using histcounts, concatenate them into one matrix, and use the bar function to plot them as grouped bars as described in Display Groups of Bars
Example —
Edges = (1:6)/10;
Ctrs = mean(diff(Edges))/2+Edges(1:end-1);
N1 = histcounts(rand(1,100),Edges);
N2 = histcounts(rand(1,100),Edges);
N3 = histcounts(rand(1,100),Edges);
Nmtx = [N1; N2; N3];
figure
bar(Ctrs, Nmtx)
xticks(Ctrs)
This of course assumes that ‘Edges’ are regularly spaced.
EDIT — (14 Jul 2021 at 20:08)
The other option of coursee is to Display Stacked Bars
figure
bar(Ctrs, Nmtx, 'stacked')
xticks(Ctrs)
.
  2 commentaires
Maggie liu
Maggie liu le 14 Juil 2021
Thank you!
Star Strider
Star Strider le 14 Juil 2021
As always, my pleasure!
.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Distribution Plots dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by