绘制点(x,y)并使用第三个(z)作为Matlab中的颜色代码

时间:2013-01-14 18:11:45

标签: matlab matlab-figure

  

可能重复:
  matlab: scatter plots with high number of datapoints

我有3个载体,每个载体315,000个元素。 X,Y和Z. X& Y是坐标,Z是值。我必须将坐标绘制为2D图形中的点,Z是X和Y的每个坐标处的颜色指示器。我尝试了“散射”命令,但它非常慢。有人会建议一个更好的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

根据您要查找的颜色地图类型,您可以尝试类似

的内容
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更快。我相信你可以进一步优化它。

答案 1 :(得分:0)

从MATLAB文件交换here中尝试cline。看起来它完全符合您的要求。

答案 2 :(得分:0)

由于矢量的大小,您的代码很慢,而不是因为SCATTER功能。尝试将它们分解为更小尺寸的矢量(例如,每个10个元素)并将每个矢量放入单元阵列的单元格中。然后循环遍历单元阵列并分别散布每个较小的向量,以避免过多地加载到内存中。

hold on
for i=1:numel(XcoordCellArray):
  scatter(XcoordCellArray{i},YcoordCellArray{i},S,ZcoordCellArray{i})
end