在matlab中着色矩阵

时间:2011-08-16 10:56:06

标签: image matlab colors matrix plot

  

可能重复:
  How do I visualize a matrix with colors and values displayed?

我在MATLAB中基本上有一个NxN(编辑:N可以达到80)矩阵的双倍和我将它绘制为一个数组(我想看到数字)和一些单元格应该被着色(决定我如何为数字着色的函数与数字无关)。

我想到了不同的方法:

  • 创建一个网格作为图像并用文本覆盖它但是MATLAB的图将会很糟糕,因为它将删除一些像素以调整图像大小(我的矩阵可以在80x80左右)

  • 导出到excel?我不知道如何给细胞上色。

任何帮助?

因为图像有时更有帮助:

enter image description here

4 个答案:

答案 0 :(得分:8)

请考虑以下代码:

%# matrix
M = rand(11,11);
[r c] = size(M);

%# text location and labels
[xloc yloc] = meshgrid(1:c,1:r);
xloc = xloc(:); yloc = yloc(:);
str = strtrim(cellstr( num2str(M(:),'%.3g') ));
xticklabels = cellstr( num2str((1:c)','M%d') );
yticklabels = cellstr( num2str((1:r)','M%d') );

%# plot colored cells
mask = M>0.9;               %# or any other mask
h = imagesc(1:c, 1:r, ones(size(M)));
set(h, 'AlphaData',mask)
colormap(summer)            %# colormap([0 1 0])
set(gca, 'Box','on', 'XAxisLocation','top', 'YDir','reverse', ...
    'XLim',[0 c]+0.5, 'YLim',[0 r]+0.5, 'TickLength',[0 0], ...
    'XTick',1:c, 'YTick',1:r, ...
    'XTickLabel',xticklabels, 'YTickLabel',yticklabels, ...
    'LineWidth',2, 'Color','none', ...
    'FontWeight','bold', 'FontSize',8, 'DataAspectRatio',[1 1 1]);

%# plot grid
xv1 = repmat((2:c)-0.5, [2 1]); xv1(end+1,:) = NaN;
xv2 = repmat([0.5;c+0.5;NaN], [1 r-1]);
yv1 = repmat([0.5;r+0.5;NaN], [1 c-1]);
yv2 = repmat((2:r)-0.5, [2 1]); yv2(end+1,:) = NaN;
line([xv1(:);xv2(:)], [yv1(:);yv2(:)], 'Color','k', 'HandleVisibility','off')

%# plot text
text(xloc, yloc, str, 'FontSize',8, 'HorizontalAlignment','center');

screenshot

当你增加矩阵的大小时,文本最终会重叠......


修改

这是一种适用于更大矩阵的方法:我们使用不可见的图形,将其调整为足够大的尺寸,并使用较小的字体大小(我使用2):

M = rand(80,80);

figure('visible','off')
set(gcf, 'Units','Pixels', 'Position', [0, 0, 10000, 10000], ...
     'PaperPositionMode','Auto');
set(gca, 'units','normalized', 'position',[0.05 0.02 0.9 0.95])

%# ... 

然后在最后,导出到具有高分辨率的文件:

%# ...

print -dpng -r600 file.png

您可以看到output file here(10025x5962图片,645KB)

答案 1 :(得分:1)

如果您愿意输出到html(通常使用matlab的发布功能),您可以修改文件交换中的许多html表函数之一以满足您的需要。这是one example。这将使您能够输出文本和颜色。

答案 2 :(得分:0)

答案 3 :(得分:0)

在Excel中,您始终可以使用条件格式,没有任何问题。

就matlab而言,我从来没有做过这样的事情(虽然这个想法已经超出我的想法)。你有没有这样的事情How do I visualize a matrix with colors and values displayed?