散点图不能正常工作 Matlab
Scatter doesn't work properly Matlab
我写了一段代码来创建移动点的电影。我使用 scatter 使点着色(点的颜色取决于该区域点的密度)。 x 和 y 是点的位置,我将下面的代码放在 for 循环中以传递时间:
figure(h1); % set figure 1 as current figure
cla
dens = zeros(size(x));
% Tolerence is distance betweeen points (squared)
tol = 1;
for ii = 1:numel(x)
% Loop through all points, count neighbours within tolerence
dens(ii) = sum((x - x(ii)).^2 + (y - y(ii)).^2 < tol);
end
% Normalise density onto range 0-1
dens = (dens/max(dens));
hold on
scatter(x,y, [], dens,'filled','d')
drawnow
currFrame = getframe;
writeVideo(vidObj,currFrame);
当我 运行 代码时,电影已创建,但所有点都是绿色的。谁能猜出是什么原因以及如何解决?
您的 dens
计算取决于 x
和 y
的值与 tol
的值之间的关系。如果tol
太大,则所有点a算作所有其他点的"in the region",如果太小,则所有点都是"alone"。在这两种情况下,dens
对所有点都具有相同的值,并且 scatter
将它们全部涂成绿色。
我写了一段代码来创建移动点的电影。我使用 scatter 使点着色(点的颜色取决于该区域点的密度)。 x 和 y 是点的位置,我将下面的代码放在 for 循环中以传递时间:
figure(h1); % set figure 1 as current figure
cla
dens = zeros(size(x));
% Tolerence is distance betweeen points (squared)
tol = 1;
for ii = 1:numel(x)
% Loop through all points, count neighbours within tolerence
dens(ii) = sum((x - x(ii)).^2 + (y - y(ii)).^2 < tol);
end
% Normalise density onto range 0-1
dens = (dens/max(dens));
hold on
scatter(x,y, [], dens,'filled','d')
drawnow
currFrame = getframe;
writeVideo(vidObj,currFrame);
当我 运行 代码时,电影已创建,但所有点都是绿色的。谁能猜出是什么原因以及如何解决?
您的 dens
计算取决于 x
和 y
的值与 tol
的值之间的关系。如果tol
太大,则所有点a算作所有其他点的"in the region",如果太小,则所有点都是"alone"。在这两种情况下,dens
对所有点都具有相同的值,并且 scatter
将它们全部涂成绿色。