我有这样的数据
-1 -1 -1 1 0 0 1 1 -1 0 1 -1 0 1
其中向量的每个元素是几个状态之一。在这种情况下(这是任意的,显然只是一个例子),是-1 0 1
。我正在尝试制作一个像这个网格的情节:
我能得到的最接近的是spy
和各种调整的组合:
%% ARBITRARY example data
states = [-1 0 1];
data = [-1 -1 -1 1 0 0 1 1 -1 0 1 -1 0 1];
%% Approximate plot using sparse matrix and spy
T = size(data, 2);
num_states = size(states, 2);
g = zeros(num_states, T);
for idx = 1:T
jdx = find(data(idx) == states, 1, 'first');
g(jdx, idx) = 1;
end
g = sparse(g);
%% Tweak plot
obj = figure();
obj.Color = 'white';
spy(g, 30)
s = obj.Children(1);
s.XLim = [1 T];
s.YLim = [1 num_states];
s.XLabel.String = '';
s.XGrid = 'on';
s.YTick = 1:num_states;
s.YTickLabel = num2cell(states);
s.GridLineStyle = '-';
s.YGrid = 'on';
然而,这远非理想,因为a)它实际上不是阴影网格,并且b)y轴上的刻度从底部开始按降序排列,因为这是spy
的方式功能,以及其他问题。我如何制作这样的情节?我在Windows 7 64位计算机上使用MATLAB 2015b。