使用第三(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每個座標上的顏色指示器。我嘗試過「散射」命令,但速度非常慢。有人會建議更好的方法嗎?
謝謝!
使用第三(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每個座標上的顏色指示器。我嘗試過「散射」命令,但速度非常慢。有人會建議更好的方法嗎?
謝謝!
由於矢量的大尺寸,您的代碼很慢,而不是因爲SCATTER函數。嘗試將它們分解爲更小尺寸的向量(比如每個10個元素)並將每個向量放入單元陣列的單元格中。然後遍歷單元陣列並分別分散每個較小的向量,以避免過多地加載到內存中。
hold on
for i=1:numel(XcoordCellArray):
scatter(XcoordCellArray{i},YcoordCellArray{i},S,ZcoordCellArray{i})
end
取決於什麼樣的您正在尋找的彩色地圖,你可以嘗試像
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
更快。我相信你可以進一步優化。
你真的需要繪製所有315000個元素嗎?典型的屏幕無論如何都有2K像素,不能只使用interp1或類似的方法下載你的矢量,並使用散射? – bla
可能是一個很好的解決方案,謝謝 –