5

ヒストグラムをプロットするコードを MATLAB で作成しました。ビンの 1 つを他のビンとは異なる色 (赤としましょう) で着色する必要があります。誰もそれを行う方法を知っていますか? たとえば、次のようになります。

A = randn(1,100);
hist(A);

0.7 が赤に属するビンを作成するにはどうすればよいですか?

4

2 に答える 2

6

Jonas が提案するように 2 つの重なり合うバー プロットを作成する代わりにbar、ビンをパッチ オブジェクトのセットとしてプロットするために を 1 回呼び出してから、'FaceVertexCData'プロパティを変更してパッチ面の色を変更することです。

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

出力は次のとおりです。

代替テキスト

于 2010-12-17T20:16:10.773 に答える
2

最も簡単な方法は、最初にヒストグラムを描画してから、その上に赤いビンを描画することだと思います。

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
于 2010-12-17T19:10:29.310 に答える