2011-12-07 257 views
0

我有一些我想在MATLAB中繪製的數據。數據由我想要的點的x和y座標組成。目前,我正在使用繪圖函數來繪製這些點。Matlab:用相同的座標繪製多個點

該數據有很多具有相同座標的點。現在,我想要的是具有相同座標的點不會繪製爲單個點,而是繪製更粗的點。

例如,假設點是

1,1-

2,1

2,1

3,2

2,1

2,1

1,1

然後,情節應該有3,2 2,1處

一個點,但在1,1較厚的點,甚至更厚點

有人能告訴我如何做這個?

+1

不知道這樣做的任何MATLAB的方式,但我用通過繪製一個小圓圈做我自己的套路這樣的事情(圈子是足夠的這個,雖然該標記可以是任何東西),只是通過增加半徑每次點擊同一個點時都會有一個。最後,根據你「擊中」同一地點的次數,你會得到一個大的實心圓。 – Rook

回答

3

你可以使用一點創造力和scatter函數來做到這一點。

首先,您需要將您的數據減少到一個點的列表,再加上每個位置的點數。

例如,如果你有一些數據:

xy = [... 
    1,1; ... 
    2,1; ... 
    2,1; ... 
    3,2; ... 
    2,1; ... 
    2,1; ... 
    1,1]; 

獲取獨特的點,和唯一索引:

[xyUnique, ignore, ixs] = unique(xy,'rows') 

這是很痛苦的,但我們可以指望的出現次數每個獨特的行使用ixs向量(可能有更好的方法)。

counts = zeros(size(xyUnique,1),1); 
for ix = 1:size(counts,1); 
    counts(ix) = sum(ixs == ix); 
end 

現在使用分散,使情節,只要你想

scatter(... 
    xyUnique(:,1), ... %X values 
    xyUnique(:,2), ... %Y values 
    counts*20, ...  %Individual marker sizes, note scale factor to make this visible 
    'b', ...   %Marker colors 
    'filled');   %I think these look better filled 
0

使用形式的scatter命令:

scatter(X,Y,S) 

您必須確定座標重複多少次都設置正確的矢量S.

說明:

scatter(X,Y,S)以單一顏色繪製指定尺寸(S)的標記。這種類型的圖也被稱爲泡沫圖。

S確定每個標記的面積(在點^ 2中指定)。 S可以是與X和Y相同長度的向量或標量。如果S是標量,則MATLAB將繪製所有標記的大小相同。如果S爲空,則使用默認大小。

欲瞭解更多信息,請參閱documentation

1

要避免發生循環,構建前面的例子,試試這個:

xy = [... 
    1,1; ... 
    2,1; ... 
    2,1; ... 
    3,2; ... 
    2,1; ... 
    2,1; ... 
    1,1]; 

[xyUnique, ignore, ixs] = unique(xy,'rows') 

會導致

xyUnique = 
    1  1 
    2  1 
    3  2 

接下來,我們使用的功能 HIST

[nRows, nCols] = size(xyUnique) 
xyCount = hist(ixs,nRows) 

這導致

xyCount = 
    2  4  1 

xyCount的每個值是xyUnique的每一行的出現次數。