2014-09-22 1123 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’);