我在xyz-sphere中有一个点的三维散点图。我想知道是否有办法根据数据的密度对散点图进行色彩映射/色调。基本上,具有最密集聚类数据点的散点图部分将是暗红色,半密集聚类数据点将是中红色,稀疏聚类数据点将是浅红色。
这是我想到的方式,但(希望)可能有一个更简单的功能或命令来执行此操作。
设置一个阈值,分散中的数据点必须包围:
[> =半径为1的球体内的10个其他点,颜色为深红色,
[半径为1的球体内的5-9个其他点为中红色,
[0-4在半径为1的球体内,为浅红色。
当然,我希望有一种更简单的方法可以在彩色地图中使用超过3种颜色,所以如果有人有任何想法如何编码,我会很感激帮助!非常感谢你。
这是我的数组的片段:
184 115 3915
185 115 3916
185 115 1205
186 115 4094
187 115 2237
192 115 1519
193 115 1327
201 115 1170
240 115 2946
241 115 1332
54 116 1244
58 116 3650
59 116 3984
60 116 1631
61 116 1198
61 116 1194
62 116 1189
65 116 1185
186 116 3669
188 116 3986
189 116 2027
197 116 1200
201 116 1254
226 116 3752
227 116 1457
242 116 1405
54 117 1191
54 117 1305
56 117 1177
58 117 1169
61 117 1367
62 117 1428
62 117 1434
62 117 1435
63 117 1422
198 117 1197
229 117 1312
230 117 1179
243 117 1272
55 118 1236
56 118 1166
61 118 1191
65 118 1755
57 119 1213
57 119 1176
58 119 1253
62 119 1365
62 119 1331
63 119 1457
63 119 1251
66 119 1842
66 119 1468
59 120 1489
59 120 1387
60 120 1218
60 120 1224
61 120 1214
61 120 1440
62 120 1198
64 120 1240
205 120 3601
205 120 1168
206 120 3727
207 120 4089
208 120 2128
208 120 1160
56 121 1293
57 121 1183
59 121 1371
59 121 1347
61 121 1314
64 121 1346
207 121 3562
208 121 3845
209 121 3534
210 121 1201
210 121 1405
83 122 1794
206 122 1259
207 122 1161
83 123 3550
答案 0 :(得分:1)
在我的方法中,我使用阈值因子 has
-----------------------------------------------
| ViewController | Navigation bar of |
-----------------------------------------------
| A | B |
-----------------------------------------------
| B | C |
-----------------------------------------------
来确定在计算每个单独点的距离时考虑多少个其他点。 navigationController.setNavigationBarHidden(false, animated: true)
表示每个点计算到所有其他点的平均距离,T
表示每个点计算到最接近1%的其他点的平均距离。
T = 1
答案 1 :(得分:0)
这是一个相当粗略的功能,但我认为它可以实现与你想要的相似的结果。
代码:
a = rand(1000,3); % Create random matrix, use your data here
n = zeros(size(a,1),1); % Set up array for number of nearby points
tol = 0.2; % Tolerance for (squared) distance to count as "nearby"
sz = size(a,1); % Shorthand for size of data
% Loop over every point
for ii = 1:sz;
dists = sum((repmat(a(ii,:), sz, 1) - a).^2, 2); % Get standard Euclidean distance
n(ii) = nnz(dists < tol); % Count number of points within tolerance
end
% Plot, colouring by an nx3 RGB array, in this case just
% scaling the red and having no green or blue.
scatter3(a(:,1), a(:,2), a(:,3), [], [n./max(n), zeros(numel(n),2)], 'filled');
grid on;
输出: