【问题标题】:Relative Markersize in Matlab plotsMatlab图中的相对标记大小
【发布时间】:2011-06-09 01:11:50
【问题描述】:

我正在尝试绘制一个矩阵,其中每个元素都处于两种状态之一。 (模型..)

现在,我想要一种状态为彩色,另一种为白色。使用

[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 表示白色字段?

【问题讨论】:

    标签: matlab plot


    【解决方案1】:

    为了显示这种类型的数据,我通常更喜欢IMAGEIMAGESC 而不是PCOLOR,因为PCOLOR 在使用分面着色(默认设置)时不会显示矩阵的最后一行和最后一列。此外,IMAGEIMAGESC 翻转 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)
    

    这是一个示例图片:

    【讨论】:

      【解决方案2】:

      作为一个建议,您可以尝试使用 pcolor 而不是 `scatter' 示例:

      pcolor(hadamard(20))
      colormap(gray(2))
      axis ij
      axis square
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-22
        • 1970-01-01
        • 2023-03-05
        • 2013-04-20
        • 2015-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多