在MATLAB的pcolor图中显示二进制数组的所有元素(2D二进制数据)

Show all elements of a binary array in a pcolor plot of MATLAB (2D binary data)

假设我们在MATLAB中具有此数组和pcolor函数:

1
2
jj = [0,1,0;1,0,1;1,1,0];
pcolor(jj);

情节:

Enter image description here

我想在此pcolor图中显示jj矩阵的所有元素,因此我们应该有一个3 * 3的图。 如何在MATLAB中执行此操作?

无论如何,要仅在不超过垂直和水平缩放比例的图中显示行号和列号? 是否有其他推荐的合适类型的图来显示此类数据(二维二进制数据)?


如果要使用pcolor显示所有图像数据,则在打印之前需要在输入处添加额外的行和列,因为在下面,pcolorsurf对象,并且将颜色分配给了 顶点而不是面孔。

1
2
3
4
5
6
7
8
9
jj = [0,1,0;1,0,1;1,1,0];

% Add an extra column
jj(:,end+1) = 0;

% Add an extra row
jj(end+1,:) = 0;

p = pcolor(jj);

现在,如果只需要轴上的整数标签,则可以使用axesXTick / YtickXTickLabel / YTickLabel属性来调整它们,以为每个元素绘制适当的值

1
2
3
4
5
6
7
8
9
10
11
12
xlims = get(gca, 'XLim');
ylims = get(gca, 'YLim');

% Must offset ticks by 0.5 to center them
xticks = (xlims(1) + 0.5):(xlims(2) - 0.5);
yticks = (ylims(1) + 0.5):(ylims(2) - 0.5);

xticklabels = arrayfun(@num2str, 1:numel(xticks), 'UniformOutput', 0);
yticklabels = arrayfun(@num2str, 1:numel(yticks), 'UniformOutput', 0);

set(gca, 'xtick', xticks, 'ytick', yticks, ...
         'xticklabel', xticklabels, 'yticklabel', yticklabels)

如果不需要黑色边缘,只需使用imagesc即可完成相同的2D图

1
2
3
4
5
6
imagesc(jj);

xlims = get(gca, 'xlim');
ylims = get(gca, 'ylim');

set(gca, 'xtick', xlims(1):xlims(2), 'ytick', ylims(1):ylims(2))