我偶然发现了这个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
答案 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', []);
输出:
答案 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;
如果要更改宽高比,可以使用x
和y
值来缩放条带高度的宽度。
答案 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;