0
我有一個2d矩陣A
(100 x 100
),其中每行包含要繪製的信號。 我想繪製每行不同顏色的同一圖中的所有信號。我怎樣才能輕鬆做到這一點?在matlab中繪製2d矩陣的行
我有一個2d矩陣A
(100 x 100
),其中每行包含要繪製的信號。 我想繪製每行不同顏色的同一圖中的所有信號。我怎樣才能輕鬆做到這一點?在matlab中繪製2d矩陣的行
如果你實際上看at the documentation爲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
而結果
感謝您的回答。如果我想知道情節中的每一行,它代表哪一行(轉置)?這是怎麼回事? – alphonse
@alphonse 100個信號對於一個'legend「來說很難做到。我會快速添加一些內容,讓您點擊一個圖表來顯示它來自哪裏。 – Suever
再次感謝。其實信號的數量不是100,它的大約是15.謝謝,我會很高興你能任何東西 – alphonse