2013-07-24 59 views
4

我在Matlab中通过调用以下命令创建二维图:imagesc(vector1, vector2, mat_weights)。然后,我运行colorbar命令。在Matlab图像中添加单元格之间的空间c输出

我现在有一个平滑的二维图,但我想单元格之间增加空间。以下是我希望它看起来:

Here's how the spacing should look

如何添加细胞/盒之间的这种间距?

+0

+1了有趣的问题。看看'cellplot',它不会是直接的,但它应该工作。 – bla

+0

@natan感谢您的帮助 - 我会看看。如果你有使用cellplot的经验,我会很感激你能发布一些相关的示例代码!另一方面, –

+0

,'pcolor'也可能工作...如果今天没有人会给你答案,我会尽力为你解决这个问题。 – bla

回答

4

您可以使用imagesc以外的其他功能在色块之间添加空格。这里,scatter提供了一个简单的解决方案,当使用选项“填充”和标记“方形”时。

请注意,您需要将2-D矩阵转换为向量,但不一定要缩放数据:scatter从数据中获取最小值和最大值,并将它们分配给最小和最大颜色色彩地图。

代码

% 2-D in 1-D: 
Z = diag(1:10); %example of 2-D matrix to be plotted 
C = reshape(Z,1,[]); %1-D transform for vector color 

% input definition 
sz_matrix = 10; 
X = repmat((1:sz_matrix), 1, sz_matrix); 
Y = kron(1:sz_matrix,ones(1,sz_matrix)); 
S = 1000;     % size of marker (handle spaces between patches) 
%C = (X.^2 + Y.^2);  % second color scheme 

%plot  
figure('Color', 'w', 'position', [10 10 600 400]); 
scatter(X, Y, S, C, 'fill', 's'); 
set(gca, 'XLim', [0 11], 'YLim', [0 11]); 
axis square; 
colormap summer 
colorbar 

会给

enter image description here

EDIT

这里是矩形矩阵的一段代码。请注意Y轴方向的反转,以便图形表示匹配disp(Z)。要在分离色块的白色区域中具有相似的(x,y)比例,可以尝试手动调整图形大小。

Z = diag(1:10); %example of 2-D matrix to be plotted 
Z = Z(1:end-2,:); %trim for rectangular 

% input definition 
X = repmat(1:size(Z,2), 1, size(Z,1)); 
Y = kron(1:size(Z,1),ones(1,size(Z,2))); 
C = reshape(Z',1,[]); %1-D transform for vector color 
S = 1000;     % size of marker (handle spaces between patches) 

%plot  
figure('Color', 'w'); 
scatter(X, Y, S, C, 'fill', 's'); 

set(gca, 'XLim', [0 size(Z,2)+1], 'YLim', [0 size(Z,1)+1]); 
colormap jet 
colorbar 
set(gca, 'YDir','reverse'); 

的输出继电器:

enter image description here

+0

+1非常好Magla! – bla

+0

非常感谢,这个伎俩! –

+0

@Magla:快问!一旦我提供了一个非方形矩阵(对于轴自然而言具有适当的矢量长度),该代码似乎就会崩溃。这应该如何适应?谢谢你的帮助! –

相关问题