2013-01-14 75 views
3

使用第三(Z)作爲顏色代碼可能重複:
matlab: scatter plots with high number of datapoints標繪點(X,Y)和在Matlab

我有每315,000元件的3個向量。 X,Y和Z. X & Y是座標,Z是一個值。我必須將座標繪製爲2D圖形中的點,Z是X和Y每個座標上的顏色指示器。我嘗試過「散射」命令,但速度非常慢。有人會建議更好的方法嗎?

謝謝!

+0

你真的需要繪製所有315000個元素嗎?典型的屏幕無論如何都有2K像素,不能只使用interp1或類似的方法下載你的矢量,並使用散射? – bla

+0

可能是一個很好的解決方案,謝謝 –

回答

0

嘗試從MATLAB文件交換 here。它看起來像它正是你想要的。

+0

我試圖繪製元素作爲點....但感謝評論。我會更新這個問題 –

0

由於矢量的大尺寸,您的代碼很慢,而不是因爲SCATTER函數。嘗試將它們分解爲更小尺寸的向量(比如每個10個元素)並將每個向量放入單元陣列的單元格中。然後遍歷單元陣列並分別分散每個較小的向量,以避免過多地加載到內存中。

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

取決於什麼樣的您正在尋找的彩色地圖,你可以嘗試像

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更快。我相信你可以進一步優化。