マトラブを使用。
これは非常に単純な問題のように思えますが、解決できませんでした。塗りつぶし関数 (または同様のもの) を使用して、一連の数字から同じ値を色で表すことを検討しています。
例えば:

= [ 1 1 1 2 2 1 3 3 3 4 5 5];
数字の各グループは色で表されます。以下に示すように:
棒グラフでこれを行うことができましたが、視覚的に違いをより適切に表現するために塗りつぶし機能 (または同様のもの) を使用できるかどうかを確認したかったのです。
前もって感謝します
マトラブを使用。
これは非常に単純な問題のように思えますが、解決できませんでした。塗りつぶし関数 (または同様のもの) を使用して、一連の数字から同じ値を色で表すことを検討しています。
例えば:

= [ 1 1 1 2 2 1 3 3 3 4 5 5];
数字の各グループは色で表されます。以下に示すように:
棒グラフでこれを行うことができましたが、視覚的に違いをより適切に表現するために塗りつぶし機能 (または同様のもの) を使用できるかどうかを確認したかったのです。
前もって感謝します
私がたどり着いた解決策は次のとおりですが、もう少し複雑かもしれませんが、私にとっては簡単な方法があります。
% X の最大数に基づいて色を生成します gen_colors = rand(max(X),3);
%create the map store to hold each record
mapstore = [];
%assign the colours to each id
for i=1:size(X,1)
%Obtain the correct ID ready to assign colour
sI = X(i);
%Pass over the correct ID for each row ID
mapstore = [mapstore; gen_colors(sI,:)];
end
%Pass over the selected segment row colours to be formated
map = colormap(mapstore);
%Create an image with the segments to display
image(repmat(cat(3, map(:,1)', map(:,2)', map(:,3)'), 20, 1));
% Remove ticks we dont want, and add a few relavant ones
%Pass ind to highlight where the keyframes are placed on the plot
set(gca, 'ytick', 0, 'xtick', ind);
%styling
axis equal
axis tight
axis xy
整数を一連の色にマップしたい場合は、カラーマップを補間する関数を定義できます。カラーマップは、ヒート マップなどでよく使用されます。例: http://www.mathworks.com/help/matlab/ref/colormap.html
それらを使用して、遭遇する最大値を知っていれば、整数を特定の色にマップできます。1 から 5 を入力したので、最大の整数として 5 を使用します。
cm = jet; % use the Jet colormap
n = 5; % largest integer
color1 = interp1(linspace(0, 1, size(cm, 1)), cm, 1/n)
color2 = interp1(linspace(0, 1, size(cm, 1)), cm, 2/n)
color3 = interp1(linspace(0, 1, size(cm, 1)), cm, 3/n)
color4 = interp1(linspace(0, 1, size(cm, 1)), cm, 4/n)
color5 = interp1(linspace(0, 1, size(cm, 1)), cm, 5/n)
結果 (RGB 形式で記述) は次のとおりです。
color1 =
0 0.3500 1.0000
color2 =
0.1375 1.0000 0.8625
color3 =
0.9250 1.0000 0.0750
color4 =
1.0000 0.2875 0
color5 =
0.5000 0 0
jet(5) を呼び出すだけで同様の結果が得られることを考えると、ここでは少しやり過ぎたことに注意してください。ただし、リストされているアプローチでは、独自のカスタム カラーマップを定義して補間することができます。