Я нашел возможное решение с помощью функции pcolor .
Предупреждение: я тестировал только с октавой
Если вы хотите создать (m x n) таблицу с 4 цветами, как вам нужно, вы должны:
- создать массив размером
(m+1 x n+1)
из диапазона integers' in the
1: 4`, установив их в соответствии с желаемым порядком
- Позвоните
pcolor
, чтобы построить стол
- настроить размер
figure
- создайте свой
colormap
в соответствии с желаемыми цветами
- установить карту цветов
- добавить нужный текст, используя текстовую функцию
- установить
tick
и ticklabel
осей
Изменить, чтобы ответить на комментарий
В дальнейшем вы можете найти возможную реализацию предложенного решения.
Код создает два figure
:
- В первом из них будут отображены значения входной матрицы
- Во втором пользовательские строки
Ассоциация "значение цвета" выполняется через пользовательскую цветовую карту.
Поскольку в матрице x
есть 4 различных возможных значения (это было определено как x=randi([1 4],n_row+1,n_col+1);
), цветовая карта должна состоять из записи 4 RGB
следующим образом.
cm=[1 0.3 0.3 % RED
0.3 0.3 1 % BLUE
0 1 0 % GREEN
1 1 1]; % WHITE
Если вы хотите изменить ассоциацию, вам просто нужно изменить порядок строк цветовой карты.
Комментарии в коде должны прояснить вышеупомянутые шаги.
Код обновлен
% Define a rnadom data set
n_row=24;
n_col=10;
x=randi([1 4],n_row+1,n_col+1);
for fig_idx=1:2
% Open two FIGURE
% In the first one wil be ploted the values of the input matrix
% In the second one the user defined strings
figure('position',[ 1057 210 606 686])
% Plot the matrix
s=pcolor(x);
set(s,'edgecolor','w','linewidth',3)
% Define the colormap
%cm=[1 1 1
% 0 1 0
% 0.3 0.3 1
% 1 0.3 0.3];
cm=[1 0.3 0.3 % RED
0.3 0.3 1 % BLUE
0 1 0 % GREEN
1 1 1]; % WHITE
% Set the colormap
colormap(cm);
% Write the text according to the color
[r,c]=find(x(1:end-1,1:end-1) == 1);
for i=1:length(r)
if(fig_idx == 1)
ht=text(c(i)+.1,r(i)+.5,num2str(x(r(i),c(i))));
else
ht=text(c(i)+.1,r(i)+.5,'SUR');
end
set(ht,'fontweight','bold','fontsize',10);
end
% Write the text according to the color
[r,c]=find(x(1:end-1,1:end-1) == 2);
for i=1:length(r)
if(fig_idx == 1)
ht=text(c(i)+.1,r(i)+.5,num2str(x(r(i),c(i))));
else
ht=text(c(i)+.1,r(i)+.5,'DBL');
end
set(ht,'fontweight','bold','fontsize',10);
end
% Write the text according to the color
[r,c]=find(x(1:end-1,1:end-1) == 3);
for i=1:length(r)
if(fig_idx == 1)
ht=text(c(i)+.1,r(i)+.5,num2str(x(r(i),c(i))));
else
ht=text(c(i)+.1,r(i)+.5,'HIT');
end
set(ht,'fontweight','bold','fontsize',10);
end
% Write the text according to the color
[r,c]=find(x(1:end-1,1:end-1) == 4);
for i=1:length(r)
if(fig_idx == 1)
ht=text(c(i)+.1,r(i)+.5,num2str(x(r(i),c(i))));
else
ht=text(c(i)+.1,r(i)+.5,'STK');
end
set(ht,'fontweight','bold','fontsize',10);
end
% Create and set the X labels
xt=.5:10.5;
xtl={' ';'2';'3';'4';'5';'6';'7';'8';'9';'10';'A'};
set(gca,'xtick',xt);
set(gca,'xticklabel',xtl,'xaxislocation','top','fontweight','bold');
% Create and set the X labels
yt=.5:24.5;
ytl={' ';'Soft20';'Soft19';'Soft18';'Soft17';'Soft16';'Soft15';'Soft14';'Soft13'; ...
'20';'19';'18';'17';'16';'15';'14';'13';'12';'11';'10';'9';'8';'7';'6';'5'};
set(gca,'ytick',yt);
set(gca,'yticklabel',ytl,'fontweight','bold');
title('Dealer''s Card')
end
Таблица со значениями во входной матрице
![enter image description here](https://i.stack.imgur.com/8nEKn.jpg)
Таблица с пользовательскими строками
![enter image description here](https://i.stack.imgur.com/ynSXo.jpg)