Changing the histogram colour from within another function
Afficher commentaires plus anciens
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 commentaires
Rik
le 22 Fév 2017
I would try adding the handle to the histogram to the handles structure.
Have you tried the debugger to check step by step what happens? That usually helps me finding my more stupid mistakes (a missing minus or abs or something like that).
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
le 22 Fév 2017
Réponses (0)
Catégories
En savoir plus sur Histograms dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!