[英]Plotting rows of points in Matlab
因此,我仍然習慣於Matlab,並且在繪制時遇到了一些麻煩。 我有一個單元格,其中每行包含一個點列表。 我想在同一張圖表上以不同的顏色繪制點的每一行,以便可以對其進行比較。 問題是,我需要針對未知數量的點和行進行此工作(即,每次運行程序時,點和行的數量可以更改)。
因此,例如,我可能擁有單元格數組A:
A = {[0,0],[1,2],[3,4]; [0,0] [5,6],[9,2]}
我想針對它們的索引繪制第1行中的點(因此是3D圖形),然后在同一圖形上使第2行中的點具有不同的顏色。 行將始終具有相同的長度。 (每行將始終具有相同數量的點)。 我已經嘗試了一些不同的for循環,但似乎無法正確解決這個問題。
向我發送正確方向的任何幫助將不勝感激!
您可以將其轉換為矩陣並直接繪制:
% Some dummy data - format a little different from your example
% to allow for different numbers of elements per row
A = {[0,0, 1,2, 3,4]; [0,0, 5,6]};
% Figure out how many columns we need in total
maxLen = max(cellfun(@length, A));
% Preallocate
Amat = NaN(size(A, 1), maxLen);
% Copy data
for n = 1:size(A, 1)
curA = A{n};
Amat(n, 1:length(curA)) = curA;
end
% Generate 1:N vector repeated the correct number of times (rows)
x = repmat(1:size(Amat, 2), size(Amat, 1), 1);
plot(x, Amat)
編輯:您在帖子的某個位置提到了3D圖形。 上面的內容不會繪制3D圖形,因此可以:
% Generate Amat as above
% Then:
[X, Y] = meshgrid(1:size(Amat, 1), 1:size(Amat, 2));
surf(X, Y, Amat.'); % OR: plot3(X, Y, Amat.');
我不確定這正是您想要的,但是對於您想要從中得到哪種圖形的問題,您的問題仍然不清楚。 如果只想在繪圖上使用彩色線條,則可以使用plot3
而不是surf
,但是IMHO surf
可能會為您提供此類數據的更清晰繪圖。
點和行的數量隨每次迭代而改變的事實應該不會造成太大的問題。 我建議在繪圖循環之前使用size函數(size(A,1)和size(A,2))以獲取矩陣的尺寸。
有了矩陣的大小后,遍歷尺寸並使用holdon在同一圖上繪制線,最后在遍歷時僅使線顏色成為尺寸的函數,以便始終具有不同的線色
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.