【问题标题】:Show all elements of a binary array in a pcolor plot of MATLAB (2D binary data)在 MATLAB 的 pcolor 图中显示二进制数组的所有元素(二维二进制数据)
【发布时间】:2017-01-26 09:28:37
【问题描述】:

假设我们在 MATLAB 中有这个数组和pcolor 函数:

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

剧情:

我想在这个pcolor 图中显示jj 矩阵的所有元素,所以我们应该有一个 3*3 的图。如何在 MATLAB 中做到这一点?

无论如何,要在不高于垂直和水平缩放的图中仅显示行号和列号?有没有其他推荐的合适类型的图来显示这种类型的数据(二维二进制数据)?

【问题讨论】:

  • 为什么不使用imshowimagesc
  • 感谢您的评论。请添加您的问题答案。我检查了imagesc。有效。您对另外两个问题有何看法?
  • 我不明白关于行号/列号的问题。你能用图表说明你的意思吗?
  • 我不希望在水平轴和垂直轴上进行这种缩放。我只想要行数和列数。例如,我只想要数字 1 而不是 1 到 2 缩放(中间)。
  • 查看here 以了解使用imagesc 可视化数据的另一个选项。

标签: matlab plot binary


【解决方案1】:

如果您希望使用pcolor 显示所有图像数据,则需要在打印之前用额外的行和列填充输入,因为在下面,pcolorsurf 对象,颜色是分配给 vertices 而不是 faces

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 属性调整它们,为每个元素绘制正确的值

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 完成相同的二维绘图

imagesc(jj);

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 2012-06-15
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多