2015-11-08 6 views
1

Я наткнулся на это file exchange submission, который, учитывая положительное целое число, генерирует много «максимально различимых» цветов. Инструмент работает отлично, но я хотел бы визуализировать цвета, которые он генерирует, с цветными вертикальными полосами. Пример, взятый из связанного блога статьи:Plot Matlab цвета как вертикальные бары

Для выбора цвета:

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 

Получены вертикальные полосы слева, которые показывают эти цвета.

ответ

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

Вот один из способов, с помощью низкоуровневых 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

Вы можете играть с x и y значения для масштабирования ширины полосы, если вы хотите изменить соотношение сторон.

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; 

 Смежные вопросы

  • Нет связанных вопросов^_^