将Matlab颜色绘制为垂直条

时间:2015-11-08 23:08:16

标签: matlab colors visualization lab-color-space

我偶然发现了这个file exchange submission,它给出了一个正整数,产生了许多最大可区别的"颜色。该工具运行良好,但我想用彩色垂直带可视化它产生的颜色。一个例子,取自链接的博客文章:

选择颜色:

ans =
         0         0    1.0000
    1.0000         0         0
         0    1.0000         0
         0         0    0.1724
    1.0000    0.1034    0.7241
    1.0000    0.8276         0
         0    0.3448         0

我们在左侧获得显示这些颜色的垂直条纹。

3 个答案:

答案 0 :(得分:4)

一种相当简单的方法如下:

a = [     0         0    1.0000 ;
     1.0000         0         0 ;
          0    1.0000         0 ;
          0         0    0.1724 ;
     1.0000    0.1034    0.7241 ;
     1.0000    0.8276         0 ;
          0    0.3448         0 ]

figure
imagesc(1:size(a, 1));
colormap(a);
% Optional, but neatens things up a bit
set(gca, 'clim', [0.5 (size(a, 1) + 0.5)]);

% Also optional, removes the ticks from the axes
set(gca, 'xtick', [], 'ytick', []);

输出:

enter image description here

答案 1 :(得分:1)

这是一种方法,使用低级patch函数来创建颜色条:

c = [     0         0    1.0000
     1.0000         0         0
          0    1.0000         0
          0         0    0.1724
     1.0000    0.1034    0.7241
     1.0000    0.8276         0
          0    0.3448         0];

n = size(c,1);

figure;
x = [0:n-1; 1:n; ...
     1:n;   0:n-1];
y = [zeros(2, n); ones(2, n)];
patch('XData', x, 'YData', y, ...
      'EdgeColor', 'none', ...
      'FaceColor', 'flat', ...
      'FaceVertexCData', c);
axis off;

产生这样的情节 color strip plot

如果要更改宽高比,可以使用xy值来缩放条带高度的宽度。

答案 2 :(得分:1)

使用命令rectangle()

可以轻松绘制矩形
z = [      0         0    1.0000
    1.0000         0         0
         0    1.0000         0
         0         0    0.1724
    1.0000    0.1034    0.7241
    1.0000    0.8276         0
         0    0.3448         0];

     h = 6; % Heigth rectangle
     w = 1  % Width rectangle

     n = size(z,1); % Colours in z

     x = 1:w:w*n;

     for ii = 1:n
     rectangle('Position',[x(ii),0,w,h],'FaceColor',z(ii,:))
     end
     axis off;