2010-12-17 7 views

Odpowiedz

2

Domyślam się, że najprościej jest najpierw narysować histogram, a następnie narysować na nim czerwony pojemnik.

A = randn(1,100); 
[n,xout] = hist(A); %# create location, height of bars 
figure,bar(xout,n,1); %# draw histogram 

dx = xout(2)-xout(1); %# find bin width 
idx = abs(xout-0.7) < dx/2; %# find the bin containing 0.7 
hold on;bar([xout(idx)-dx,xout(idx),xout(idx)+dx],[0,n(idx),0],1,'r'); %# plot red bar 
+0

dzięki, ale szukam sposób t o narysuj na histogramach. – ariel

+1

@ariel: Wygląda na to, że popełniłem błąd podczas wywoływania 'bar'. Teraz powinno działać. – Jonas

+0

+1 i potwierdził, że działa. – gnovice

6

alternatywę do dwóch nakładających wykresy słupkowe jak Jonas suggests jest, aby jedno połączenie do bar wykreślić pojemników w zestaw patch objects, następnie zmodyfikować do kolorowania twarzy patch:

A = randn(1,100);     %# The sample data 
[N,binCenters] = hist(A);   %# Bin the data 
hBar = bar(binCenters,N,'hist'); %# Plot the histogram 
index = abs(binCenters-0.7) < diff(binCenters(1:2))/2; %# Find the index of the 
                 %# bin containing 0.7 
colors = [index(:) ...    %# Create a matrix of RGB colors to make 
      zeros(numel(index),1) ... %# the indexed bin red and the other bins 
      0.5.*(~index(:))];   %# dark blue 
set(hBar,'FaceVertexCData',colors); %# Re-color the bins 

a oto wyjście:

alt text

+0

Nie sprawdziłem nawet, czy seria prętów daje ci indywidualne uchwyty po tym, jak zobaczyłem, że histogram jest tylko pojedynczym obiektem. +1 za ostrożność. – Jonas

Powiązane problemy