我正在尝试绘制一个矩阵,其中每个元素都处于两种状态之一。 (新模型..)
现在,我想让一种状态是彩色的,另一种是白色的。可以使用
[i,j] = find(S);
figure(gcf);
plothandle = scatter(i,j);
axis([0 nNodes+1 0 nNodes+1]);
当 S 持有 Spins 且一个状态等于 0 时。(find 返回仅包含非零元素的矩阵)
要绘制有用的图,标记的大小在相对坐标中应为 1x1。因此,如果整个矩阵 S 处于非零状态,则所有内容都会被着色。
但是,似乎 Matlab 只允许以磅或英寸为单位的 MarkerSizes。我该如何解决这个问题?
我的一个想法是,我找出轴的点大小,然后可以轻松计算出我的标记应该有多大。然后,如果我想放大等等,我将不得不创建一个回调函数。此外,我还没有找到一种方法(没有图像采集工具箱)来找出我的轴的绝对大小。
澄清我想要的:我如何使用矩阵绘制棋盘,其中 1 表示黑色区域,0 表示白色区域?
最佳答案
对于显示此类数据,我通常更喜欢 IMAGE或 IMAGESC至 PCOLOR自 PCOLOR使用多面阴影(默认)时,不会显示矩阵的最后一行和最后一列。另外,IMAGE和 IMAGESC翻转 y 轴,使图像更直观地匹配您在查看矩阵时的想法(即行从顶部的 1 开始)。您可以像这样可视化您的矩阵:
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)
这是一个示例图片:
关于matlab - Matlab 图中的相对标记大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282361/