我正在尝试绘制一个矩阵,其中每个元素都处于两种状态中的一种状态。 (正在模特......)
现在,我希望有一个状态为彩色,另一个状态为白色。这可以使用
[i,j] = find(S);
figure(gcf);
plothandle = scatter(i,j);
axis([0 nNodes+1 0 nNodes+1]);
当S保持Spins并且一个状态等于0.(find返回一个只有非零元素的矩阵)
要获得有用的绘图,标记的大小在RELATIVE坐标中应为1x1。因此,如果整个矩阵S处于非零状态,则一切都将被着色。
然而,似乎Matlab只允许以磅或英寸为单位的MarkerSizes。我怎么能解决这个问题?
我的一个想法是,我找到了轴的点大小,然后可以很容易地计算我的标记应该有多大。然后我必须创建一个回调函数,如果我想放大等等。此外,我还没有找到一种方法(没有图像acq。工具箱)来找出我的轴的绝对大小。
澄清我想要的东西:我如何使用矩阵绘制棋盘,黑色为1,白色为0?
答案 0 :(得分:3)
为了显示此类数据,我通常更喜欢IMAGE或IMAGESC到PCOLOR,因为PCOLOR在使用多面时不会显示矩阵的最后一行和一列着色(默认)。此外,IMAGE和IMAGESC翻转y轴,使图像更直观地匹配您在查看矩阵时的想法(即行从顶部的行开始)。你可以像这样想象你的矩阵:
S = round(rand(20)); %# Sample 20-by-20 matrix of ones and zeroes
imagesc(S); %# Plot the image
colormap([1 1 1; 0 0 0]); %# Set the colormap to show white (zero elements) and
%# black (non-zero elements)
这是一张示例图片:
答案 1 :(得分:1)
正如建议一样,您可以尝试使用pcolor
代替`scatter'示例:
pcolor(hadamard(20))
colormap(gray(2))
axis ij
axis square