On Mon, Jan 11, 2010 at 8:17 AM, David Bateman<address@hidden>
wrote:
Jaroslav Hajek wrote:
hi,
I recently started some work where I'm going to use scatter plots
heavily with a few thousand points.
I found out, however, that scatter plots were unusably slow with so
many points. This has also been reported before:
http://old.nabble.com/scatter3-is-really-slow-to24312164.htm
by this changeset
http://hg.savannah.gnu.org/hgweb/octave/rev/2f435ed48143
I tried to optimize the plotting strategy to get more reasonable
times, especially in the simplest cases. The old strategy of creating
one object per point is only used for small numbers of points (<= 20).
Otherwise, the points are split into subsets with common color and
size, and these subsets are plotted using a single primitive. This
seems similar to what Matlab does.
If this is done in the baackend ok, but I deliberately didn't make this
change in the frontend as it breaks matlab compatibility
What breaks Matlab compatibility? Please explain. Note that it is
*not* true that Matlab always creates one object per point (as you
seemed to imply in the above linked mail), at least in 2007a. It does
so only when there is a small number of points:
n = 10;
h = scatter (rand (n, 1), rand (n, 1))
h =
159.0022
get(h,'children')
ans =
169.0011
168.0011
167.0011
166.0011
165.0011
164.0011
163.0011
162.0011
161.0015
160.0012
n = 1000;
h = scatter (rand (n, 1), rand (n, 1))
h =
159.0028
get(h,'children')
ans =
160.0013
I bet the strategy Matlab uses is similar to ours. I didn't
investigate the switch point, but I don't really think compatibility
is needed at that level.
regards
--
RNDr. Jaroslav Hajek, PhD
computing expert& GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz