Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Matlab填充函数表示颜色值_Matlab_Matlab Figure - Fatal编程技术网

用Matlab填充函数表示颜色值

用Matlab填充函数表示颜色值,matlab,matlab-figure,Matlab,Matlab Figure,使用Matlab 这似乎是一个非常简单的问题,但我一直无法解决它。我希望使用fill函数(或类似的函数)来表示数字序列中相同的颜色值 例如: a=[1 1 2 1 3 3 4 5] 其中每组数字由一种颜色表示。如下图所示: 我已经能够在条形图上这样做了,但是我想看看是否可以使用fill函数(或类似的函数)来更好地在视觉上表示差异 提前感谢如果要将整数映射到一组颜色,可以定义一个插值颜色映射的函数。彩色贴图通常用于热图等,例如 您可以使用它们将整数映射到特定颜色,前提是您知道将遇到的最大值。你把

使用Matlab

这似乎是一个非常简单的问题,但我一直无法解决它。我希望使用fill函数(或类似的函数)来表示数字序列中相同的颜色值

例如:

a=[1 1 2 1 3 3 4 5]

其中每组数字由一种颜色表示。如下图所示:

我已经能够在条形图上这样做了,但是我想看看是否可以使用fill函数(或类似的函数)来更好地在视觉上表示差异


提前感谢

如果要将整数映射到一组颜色,可以定义一个插值颜色映射的函数。彩色贴图通常用于热图等,例如

您可以使用它们将整数映射到特定颜色,前提是您知道将遇到的最大值。你把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格式描述)如下:


请注意,我在这里做得有点过头了,因为你可以直接调用jet(5),它会给你一个类似的结果。不过,列出的方法允许您定义自己的自定义颜色贴图并对其进行插值。

我得出的解决方案如下,但它可能会稍微复杂一些,并且有一些简单的方法适合我

%根据X的最大数量生成颜色 gen_颜色=兰特(最大(X),3)

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
%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