Hi,

When improving the performance of plotting high-dimensional data using 
faceted scatter plots, I noticed that much of time was spent on the axis 
creation (even 50%!).

On my machine creating 20x20 array of subplots without actually plotting 
anything takes about 11 seconds (for comparison plotting 5000 points on 
all of them takes only 0.6s!):

import matplotlib
matplotlib.interactive(True)
import matplotlib.pyplot as plt
fig, axes = plt.subplots(20,20)
plt.show()

Profiling shows that 50% of computation time is spent on axis/ticks 
creation [1], which I have to remove anyways. Is there any easy way of 
creating thinned axes without ticks and spines?

So far I solved the problem by subclassing Axes class (see this gist 
[2]) and removing all spines and ticks. Running the above example gives 
a 10x boost in performance (from 11s to 0.9s).

import thin_axes
fig, axes = plt.subplots(20,20, subplot_kw=dict(projection='thin'))
plt.show()

Profiling results show more uniform distribution of computing time 
across functions (most time is spent on creating and applying transforms 
[3]).

The thinned class seems a bit hacky. Is there any other way to create a 
raw Axes object without spines, ticks, labels etc., just pure canvas 
with appropriate transforms?

Yours,

Bartosz


[1] profiling results of vanilla Axes: http://pbrd.co/1jlovoo
[2] https://gist.github.com/btel/a6b97e50e0f26a1a5eaa
[3] profiling results of thined Axes:

------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to