我有一个2d矩阵A
(100 x 100
),其中每行包含一个要绘制的信号。
我想绘制同一图中的所有信号,每行的颜色不同。我怎么能这么容易地做到这一点?
答案 0 :(得分:0)
如果您实际查看plot
plot
,您会看到如果您将矩阵传递给它,它会将每列绘制为相同轴上的单独绘图对象。因此,您只需将数据的转置传递给% Example data
A = magic(10);
% Create a plot for each row
hplot = plot(A.');
。
parula
这将使用下一个绘图颜色绘制每个信号。
如果您想确保拥有所有不同的颜色,可以使用色彩图(例如set(hplot, {'Color'}, num2cell(parula(size(A, 1)), 2))
)为每个图明确设置不同的颜色。
legend
<强>更新强>
如果您想标记您的情节,只需使用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
或者,如果您有太多的图表可以合理地放入图例中,您可以创建一个交互式图表,在鼠标悬停时突出显示给定的图表。这是一个这样的例子。
WITH
结果