MATLAB Answers

How can I change the line color in the output of imhist?

67 views (last 30 days)
imhist provides the output in blue lines;i want to change it into say either red or green

  0 Comments

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 15 Aug 2017
Edited: Image Analyst on 15 Aug 2017
For precise control, plot it yourself with bar() and then set the 'EdgeColor' and 'FaceColor' properties in the bar() function:
img = imread('moon.tif');
[counts, grayLevels] = imhist(img, 64);
bar(grayLevels, counts, 'EdgeColor', 'r', 'FaceColor', 'c', 'BarWidth', 0.95);
Makes cyan bars with red outlines.

  6 Comments

Show 3 older comments
Baptiste Ottino
Baptiste Ottino on 17 Aug 2017
Suresh, I gave you a way as an answer, by using findobj.
Suresh Kumar
Suresh Kumar on 17 Aug 2017
But the output I am getting for findobj() is a zero matrix.. >> myhist=findobj(gca,'Type','Stem')
myhist =
Empty matrix: 0-by-1
Image Analyst
Image Analyst on 17 Aug 2017
This worked for me:
img = imread('moon.tif');
imhist(img, 64);
myHist = findobj(gca, 'Type', 'Stem');
% Change the color to red
myHist.Color = [1 0 0]
but Suresh was wondering if it could all be done inside imhist() without a separate call to bar(), or to findobj() and myHist.Color.
Personally, I like the wider bars created by bar() rather than the single pixel wide lines by imhist's build in stem display.

Sign in to comment.

More Answers (1)

Baptiste Ottino
Baptiste Ottino on 15 Aug 2017
The histogram is a 'Stem' element. Use findobj to access its properties:
imhist(myImage);
myHist = findobj(gca, 'Type', 'Stem');
% Change the color to red
myHist.Color = [1 0 0]
If you use an older version of Matlab, you can replace the last line by:
% Change the color to red
set(myHist, 'Color', [1 0 0]);
Good luck!

  0 Comments

Sign in to comment.

Sign in to answer this question.