Changing the histogram colour from within another function

조회 수: 1 (최근 30일)
Jason
Jason 2017년 2월 22일
댓글: Jason 2017년 2월 22일
Hi,
I have a histogram function "myHistogram" that I want to be able to change the colour of the bars from another function.
function [ctrs,counts,mode]=myHistogram(handles,data,step,colour)
edges=[0:step:max(data(:))-1];
h=histogram(data,edges,'EdgeAlpha',0.3,'EdgeColor',colour);
setappdata(0,'histog',h)
I thought that saving the handles structure h using setappdata would allow it to be called in the other function by using getappdata.
function logXAxis(source,event,ax,handles)
val = source.Value
h=getappdata(0,'histog')
if val==1
set(gca,'XScale','log')
xlabel('Log(Intensity)')
h.FaceColor = [.850 0.3250 0.0980];
else
set(gca,'XScale','linear')
xlabel('Intensity')
h.FaceColor = [0 0.4470 0.7410];
end
However, nothing happens, no change in colour.
  댓글 수: 4
Adam
Adam 2017년 2월 22일
편집: Adam 2017년 2월 22일
You say 'nothing happens'. First thing to check is always whether or not the histogram is being retrieved or not as there are (at least) 2 obvious totally different possibilities for why "nothing happens".
Either you don't get the histogram (which I would have thought would yield a syntax error) or you do get the histogram, but your instructions to change the colour don't achieve what you want.
It is always best to make sure you can pin down as tightly as possible the source of a bug rather than bring in a whole load of surrounding stuff that may or may not have anything to do with the bug.
In a quick test changing the face colour like that should work. Does the xlabel change? Is that function even getting called?
Jason
Jason 2017년 2월 22일
Your right it does work. I needed to do a refresh.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Histograms에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by