File Exchange

image thumbnail

fastscatter.m

version 1.3.0.0 (1.03 KB) by Aslak Grinsted
A much faster scatterplot

8 Downloads

Updated 29 Jul 2014

View License

A fast scatter plot

h=fastscatter(X,Y,C [,markertype,property-value pairs])

Inputs:
X,Y: coordinates
C: color


Examples:
N=100000;
fastscatter(randn(N,1),randn(N,1),randn(N,1))

N=100;
fastscatter(randn(N,1),randn(N,1),randn(N,1),'+','markersize',7)
______________________________________
An illustrative example of the speed-up when using fastscatter over scatter:
N=200000;
X=randn(N,1);Y=randn(N,1);C=X.^2+Y.^2+randn(N,1);S=ones(N,1);
tic; for ii=1:10, clf; fastscatter(X,Y,C); drawnow; end; fastscatter_time=toc
tic; for ii=1:10, clf; scatter(X,Y,S,C); drawnow; end; regularscatter_time=toc
speed_increase=regularscatter_time/fastscatter_time

fastscatter_time = 3.4 seconds
regularscatter_time = 63.3 seconds
speed_increase = 18x

And for N=400000, the performance boost was ~38x.

Comments and Ratings (4)

Lockywolf

Unfortunately, this function doesn't work if the amount of points is 1 or 2.

fastscatter(randn(2,1),randn(2,1),randn(2,1),'+','markersize',7)
Error using mesh (line 70)
Z must be a matrix, not a scalar or vector.

Error in fastscatter (line 40)
h=mesh(X(ix),Y(ix),zeros(size(ix)),'marker',marker,'cdata',C(ix),'edgecolor','none','markeredgecolor','flat','facecolor','none',varargin{:});

@YounesN: i think this is caused by a bug in image for R2014b. Try this workaround:

image(A,'CDataMapping','scaled')

Chad Greene

This function is excellent. The inbuilt scatter function was slowing my computer to a halt when I tried to plot > 200,000 points, but with fastscatter it's no problem. Thanks for sharing, Aslak!

Younes N

The speedup is amazing and helps a lot but I'm having difficulty with the colorbar when superimposing scatter points on an aerial image , using fastscatter() after image(). The colorbar doesn't correspond to the colors in the plot. Would highly appreciate your help.

Updates

1.3.0.0

bug fix... too fast with submit

1.2.0.0

Updated description

1.1.0.0

Improved performance and nan-handling.

MATLAB Release Compatibility
Created with R2014a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Acknowledgements

Inspired: fastscatterm