2014-09-22 150 views
0

我正在嘗試打印直方圖,但我需要所有大於特定值(例如250)的值爲橙色。在Matlab中更改直方圖條的顏色

輸出是: enter image description here

,我需要它是類似的東西: enter image description here 任何幫助, 這是代碼:

fh = figure; 
    hist(PZ); 
    saveas(fh, strcat('Figures\window), 'jpg') 
    close(fh); 

回答

1

的一種方式,但在這種情況下,你是有限的顏色它提供了:'b' | 'r' | 'g' | 'c' | 'm' | 'y' | 'k' | 'w'。以下是一個示例代碼:

%// Generate data 
data = randn(2000,1); 
bins = -5:5; 
[N,X] = hist(data,bins); 
%% //Color by count 
LIMIT_VAL = 500; 
figure(); 
bar(X,N,'b');hold on; 
bar(X,N.*(N<LIMIT_VAL),'r'); hold off; 
%% //Color by bin position 
LIMIT_VAL = 2; 
figure(); 
bar(X,N,'b');hold on; 
bar(X(abs(X)>=LIMIT_VAL),N(abs(X)>=LIMIT_VAL),'r'); hold off; 

另一種方法是通過修改@lakesh提到的修補程序顏色。

+0

我試過這段代碼,但是它在y軸(count)上的顏色數據超過了500,但是需要着色比500更大的數據,例如在x軸而不是y軸。 – SMH 2014-09-22 07:28:13

+0

我誤解了 - 請參閱編輯的代碼。 – 2014-09-22 07:38:54

1

我將數據分成兩個值大於250,值小於250.兩者均爲絕對值。

那麼,你這個代碼設置直方圖的顏色是不同的去了解這是使用bar繪製你的數據

hist(data1); 
hold on; 
hist(data2); 
h = findobj(gca,’Type’,’patch’); 
display(h) 
set(h(1),’FaceColor’,’b’,’EdgeColor’,’k’); 
set(h(2),’FaceColor’,rgb('orange'),’EdgeColor’,’k’);