可能重复:
matlab:具有大量数据点的散点图
我有 3 个向量,每个向量包含 315,000 个元素。X、Y 和 Z。X 和 Y 是坐标,Z 是一个值。我必须将坐标绘制为二维图中的点,Z 是 X 和 Y 的每个坐标处的颜色指示器。我尝试过“分散”命令,但速度非常慢。有人会建议更好的方法吗?
谢谢!
可能重复:
matlab:具有大量数据点的散点图
我有 3 个向量,每个向量包含 315,000 个元素。X、Y 和 Z。X 和 Y 是坐标,Z 是一个值。我必须将坐标绘制为二维图中的点,Z 是 X 和 Y 的每个坐标处的颜色指示器。我尝试过“分散”命令,但速度非常慢。有人会建议更好的方法吗?
谢谢!
根据您要查找的颜色图类型,您可以尝试类似
zmin=min(Z);
zmax=max(Z);
map=colormap;
color_steps=size(map,1);
hold on
for i=1:color_steps
ind=find(Z<zmin+i*(zmax-zmin)/color_steps & Z>=zmin+(i-1)*(zmax-zmin)/color_steps);
plot(X(ind),Y(ind),'o','Color',map(i,:));
end
这个发现有点贵,但似乎比scatter
. 我相信你可以进一步优化它。
在这里尝试cline
从 MATLAB 文件交换。看起来它完全符合您的要求。
您的代码很慢,因为向量的大小很大,而不是因为 SCATTER 函数。尝试将它们分解为更小尺寸的向量(例如,每个向量 10 个元素)并将每个向量放入元胞数组的一个元胞中。然后循环遍历单元阵列并单独分散每个较小的向量,以避免将太多加载到内存中。
hold on
for i=1:numel(XcoordCellArray):
scatter(XcoordCellArray{i},YcoordCellArray{i},S,ZcoordCellArray{i})
end