Ich habe eine 2d-Matrix A
(100 x 100
) wo jede Zeile ein Signal Plot enthält. Ich möchte alle Signale in der gleichen Figur mit unterschiedlicher Farbe für jede Zeile plotten. Wie kann ich das leicht machen?Plot Zeilen einer 2d-Matrix in Matlab
Antwort
Wenn Sie tatsächlich sehen at the documentation für plot
Sie sehen, dass wenn Sie es eine Matrix übergeben, wird es jede Spalte als separate Plot-Objekt auf den gleichen Achsen plotten. Als solche können Sie einfach die Transponierung Ihrer Daten an plot
übergeben.
% Example data
A = magic(10);
% Create a plot for each row
hplot = plot(A.');
Dies wird jedes Signal mit der nächsten Diagrammfarbe darstellen.
Wenn Sie sicherstellen möchten, dass Sie alle verschiedene Farben haben, können Sie eine colormap (wie parula
) verwenden können, um eine andere Farbe pro Parzelle explizit festgelegt.
set(hplot, {'Color'}, num2cell(parula(size(A, 1)), 2))
aktualisieren
Wenn Sie Ihre Diagramme beschriften Sie einfach legend
dies zu tun, verwenden könnte.
displaynames = arrayfun(@(x)sprintf('Plot %d', x), 1:size(A, 1), 'uni', 0);
set(hplot, {'DisplayName'}, displaynames.');
legend(hplot)
Oder wenn Sie zu viele Plots fit in angemessener Weise in einer Legende Sie können ein interaktives Plot erstellen, die eine bestimmte Handlung hervorhebt, wenn Sie es Mouseover. Hier ist ein Beispiel für so etwas.
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
Und das Ergebnis
Danke für die Antwort. Wenn ich für jede Linie in der Handlung wissen möchte, welche Reihe (transponiert) es darstellt? Wie ist das möglich? – alphonse
@alphonse Mit 100 Signalen wird das mit einer "Legende" schwierig. Ich werde etwas sehr schnell hinzufügen, das es Ihnen erlauben würde, auf ein Diagramm zu klicken, um zu zeigen, wo es herkommt. – Suever
Danke nochmal. Eigentlich ist die Anzahl der Signale nicht 100, es ist etwa 15. Danke, ich werde mit allem zufrieden sein, was Sie können – alphonse