使用特定标记绘图

ala*_*usi 6 matlab plot gnuplot

我想将一个零和一个矩阵绘制成一个图形,这样每1个我有一个形状像垂直条的标记被画成"|".这样,当一系列1在同一x轴上时,看起来像一条长直线.

这个例子说明了我的意图:

给出以下矩阵:

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
Run Code Online (Sandbox Code Playgroud)

我明白了:

酒吧图

Amr*_*mro 4

编辑:

下面的解决方案虽然比当前接受的解决方案长一点,但其优点是它创建了单个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)

在此输入图像描述 在此输入图像描述