下面的解决方案虽然比当前接受的解决方案长一点,但其优点是它创建了单个LINE对象(如果创建的图形对象较少,UI 性能会更好)。它的工作原理是使用NaN分隔段:
%#A = [1 1 1 ; 0 0 0 ; 1 1 1];
A = [
0 0 1 1 0 1 0
0 1 0 1 1 1 0
0 1 0 1 1 1 0
1 0 0 1 1 1 0
];
%# build line x/y points
[m n] = size(A);
[x y] = meshgrid(1:n, 1:m); %# grid coordinates
x(~A) = NaN; %# place NaNs where A is zero
y(~A) = NaN;
x = [x;NaN(1,n)]; %# separate columns by NaNs
y = [y;NaN(1,n)];
x = [x(:) x(:)]'; %'# add endpoints
y = [y(:) y(:)+1]'; %'#
x = x(:); %# linearize
y = y(:);
%# plot
line('XData',x, 'YData',y-0.5, 'Color','k', 'LineStyle','-', 'LineWidth',4)
set(gca, 'XGrid','on', 'Box','on', 'FontSize',8, 'LineWidth',2, ...
'XLim',[0 n]+0.5, 'YLim',[0 m]+0.5, 'XTick',1:n, 'YTick',1:m, ...
'YDir','reverse')
%#set(gca, 'XTick',[], 'YTick',[])
Run Code Online (Sandbox Code Playgroud)
