我有一些我想在MATLAB中繪製的數據。數據由我想要的點的x和y座標組成。目前,我正在使用繪圖函數來繪製這些點。Matlab:用相同的座標繪製多個點
該數據有很多具有相同座標的點。現在,我想要的是具有相同座標的點不會繪製爲單個點,而是繪製更粗的點。
例如,假設點是
1,1-
2,1
2,1
3,2
2,1
2,1
1,1
然後,情節應該有3,2 2,1處
一個點,但在1,1較厚的點,甚至更厚點有人能告訴我如何做這個?
我有一些我想在MATLAB中繪製的數據。數據由我想要的點的x和y座標組成。目前,我正在使用繪圖函數來繪製這些點。Matlab:用相同的座標繪製多個點
該數據有很多具有相同座標的點。現在,我想要的是具有相同座標的點不會繪製爲單個點,而是繪製更粗的點。
例如,假設點是
1,1-
2,1
2,1
3,2
2,1
2,1
1,1
然後,情節應該有3,2 2,1處
一個點,但在1,1較厚的點,甚至更厚點有人能告訴我如何做這個?
你可以使用一點創造力和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
使用形式的scatter
命令:
scatter(X,Y,S)
您必須確定座標重複多少次都設置正確的矢量S.
說明:
scatter(X,Y,S)以單一顏色繪製指定尺寸(S)的標記。這種類型的圖也被稱爲泡沫圖。
S確定每個標記的面積(在點^ 2中指定)。 S可以是與X和Y相同長度的向量或標量。如果S是標量,則MATLAB將繪製所有標記的大小相同。如果S爲空,則使用默認大小。
欲瞭解更多信息,請參閱documentation。
要避免發生循環,構建前面的例子,試試這個:
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的每一行的出現次數。
不知道這樣做的任何MATLAB的方式,但我用通過繪製一個小圓圈做我自己的套路這樣的事情(圈子是足夠的這個,雖然該標記可以是任何東西),只是通過增加半徑每次點擊同一個點時都會有一個。最後,根據你「擊中」同一地點的次數,你會得到一個大的實心圓。 – Rook