Histogram function plots different colours from those requested

I"m trying to color-code each of 4 histograms using a predefined color scheme. Here's a minimal working example:
colours = [0 32 96;
192 0 0;
71 207 255;
255 143 143;
] / 255;
for i=1:4
x = randn(1,100);
subplot(1,4, i)
values = histogram(x, 'FaceColor', colours (i, :));
end
However, in the image I'm getting, the colors are actually (slightly) different, for instance for the first histogram I get (102,121,160) instead of (0,32,96):

 Akzeptierte Antwort

The histogram object has a FaceAlpha property, so that if you overlay two histogram objects you can see the one underneath. If you change that FaceAlpha property the color appears slightly different and may be closer to what you want.
x = randn(1, 100);
figure
h = histogram(x, 'FaceColor', 'r');
title("Histograph with FaceAlpha " + h.FaceAlpha)
figure
h = histogram(x, 'FaceColor', 'r', 'FaceAlpha', 1);
title("Histograph with FaceAlpha " + h.FaceAlpha)

Weitere Antworten (1)

Scott MacKenzie
Scott MacKenzie am 28 Mär. 2022
Bearbeitet: Scott MacKenzie am 28 Mär. 2022
The histogram function uses a face alpha of 0.6 by default. That's why the colors appear a bit lighter than the values from your eye dropper app. If you set the face alpha to 1.0 (see below), then the displayed colors will agree with the eye dropper values.
colours = [0 32 96;
192 0 0;
71 207 255;
255 143 143;
] / 255;
for i=1:4
x = randn(1,100);
subplot(2,4, i)
values = histogram(x,'FaceColor', colours(i, :));
values.FaceAlpha = 1.0; % NOTE: default is 0.6
values.FaceColor * 255
end
ans = 1×3
0 32 96
ans = 1×3
192 0 0
ans = 1×3
71 207 255
ans = 1×3
255 143 143

3 Kommentare

Thanks Scott. I should have metioned that the pop-up in my screenshot was from a system-tray Windows programme called Instant Eyedropper, which gives the RGB coordinates of the color currently under the mouse cursor. According to that, the facecolor inside the bar is differnt from the color coordinates specified in Matlab. Other plots that I make in Matlab (e.g. with gramm) do follow the stated color scheme, according to the same Instant Eyedropper tool, which is what made me think this problem is peculiar to the histogram function.
Scott MacKenzie
Scott MacKenzie am 28 Mär. 2022
Bearbeitet: Scott MacKenzie am 28 Mär. 2022
@z8080, hmm, right your are. I dug a bit deeper and discovered why there is a discrepancy between the set colors and the eye dropper colors. See my modified answer for the details.
Seems as I was modifying my answer, @Steven Lord posted an answer. Same story.
Indeed, but thanks again Scott!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Distribution Plots finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2019b

Gefragt:

am 28 Mär. 2022

Kommentiert:

am 29 Mär. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by