在Matlab imagesc输出中添加单元格之间的空间

时间:2013-07-24 05:25:20

标签: matlab graphics plot matlab-figure

我通过调用此命令在Matlab中创建2D绘图:imagesc(vector1, vector2, mat_weights)。然后,我运行colorbar命令。

我现在有一个平滑的2D图,但我想在单元格之间添加空间。以下是我希望它的外观:

Here's how the spacing should look

如何在单元格/框之间添加这样的间距?

1 个答案:

答案 0 :(得分:4)

您可以使用除imagesc之外的其他功能在色块之间添加空格。这里,scatter与选项'filled'和标记'square'一起使用时提供了一个简单的解决方案。

请注意,您需要将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

修改

这是一段矩形矩阵的代码。请注意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