MATLAB Answers

Exact value of FaceColor in histogram

33 views (last 30 days)
When I use histogram, with default FaceColor... get(h, 'FaceColor') returns 'auto'. I do want to let it use the default, but I would like to know the value of the FaceColor as I would like to plot a line with the exact same color. How do I get the value of the FaceColor?

  0 Comments

Sign in to comment.

Accepted Answer

Ameer Hamza
Ameer Hamza on 16 May 2018
Edited: Ameer Hamza on 16 May 2018
In case of 'auto' the histogram use ColorOrder property of its axis to choose the color
get(h.Parent, 'ColorOrder')
will give you a list of colors and first-row corresponds to the first plot (i.e. your histogram). By default it is
0 0.4470 0.7410 <- This is rgb value for your histogram
0.8500 0.3250 0.0980
0.9290 0.6940 0.1250
0.4940 0.1840 0.5560
0.4660 0.6740 0.1880
0.3010 0.7450 0.9330
0.6350 0.0780 0.1840
But if you draw the line using [0, 0.4470, 0.7410], you will not get the exact same color because histogram set the default transparency ( alpha ) to 0.6. So you will need to set both RGB and alpha value to get the correct color. From the documentation, you can see that plot does not have an alpha property. Therefore to get the exact same color you can use this web link to convert RGB and alpha values to a unique RGB value against a white background. The result is
[0.4000, 0.6667, 0.8431] <- This will give correct color against white background
You can check the color by plotting
plot((1:100).^2, 'Color', [0.4000, 0.6667, 0.8431], 'LineWidth', 4)

  5 Comments

Show 2 older comments
Purnendu Nath
Purnendu Nath on 17 May 2018
One follow up question... using hold(on) when the 7th plot is finished and the 8th one is done, the FaceColor does not loop back to the 1st color of get(h.Parent, 'ColorOrder'). What is the color then used (it appears to be different) and how do I now get that?
Ameer Hamza
Ameer Hamza on 17 May 2018
According to the documentation the colors should loop back. You can see what color with which the next plot will be printed using
get(h.Parent, 'ColorOrderIndex')
It will show that which color from 1 to 7 will be used for next plot.
Purnendu Nath
Purnendu Nath on 17 May 2018
aha! perfect... thanks again!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by