在matlab中绘制2d矩阵的行

时间:2016-05-21 13:57:36

标签: matlab matrix plot signals matlab-figure

我有一个2d矩阵A100 x 100),其中每行包含一个要绘制的信号。 我想绘制同一图中的所有信号,每行的颜色不同。我怎么能这么容易地做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您实际查看plot plot,您会看到如果您将矩阵传递给它,它会将每列绘制为相同轴上的单独绘图对象。因此,您只需将数据的转置传递给% Example data A = magic(10); % Create a plot for each row hplot = plot(A.');

parula

这将使用下一个绘图颜色绘制每个信号。

at the documentation

如果您想确保拥有所有不同的颜色,可以使用色彩图(例如set(hplot, {'Color'}, num2cell(parula(size(A, 1)), 2)) )为每个图明确设置不同的颜色。

legend

enter image description here

<强>更新

如果您想标记您的情节,只需使用displaynames = arrayfun(@(x)sprintf('Plot %d', x), 1:size(A, 1), 'uni', 0); set(hplot, {'DisplayName'}, displaynames.'); legend(hplot) 即可。

htitle = title('');

set(gcf, 'WindowButtonMotionFcn', @(s,e)motionCallback(hittest(s)))
motionCallback(hplot(1));

function motionCallback(plt)
    % Don't do anything if not a line object
    [tf, ind] = ismember(plt, hplot);

    if ~tf; return; end

    set(hplot, 'linewidth', 1)
    set(plt, 'LineWidth', 3)
    set(htitle, 'String', sprintf('SelectedPlot: %d', ind))
    drawnow
end

enter image description here

或者,如果您有太多的图表可以合理地放入图例中,您可以创建一个交互式图表,在鼠标悬停时突出显示给定的图表。这是一个这样的例子。

WITH

结果

enter image description here