Tom Leys wrote: > > It looks like you are storing your source data in a python list. > Matplotlib runs much faster if you store your data using a numpy array > instead. > > I'm no expert, but it certianly sped up my graph drawing. >
I am trying something similar to what Mike was describing. I have converted all of the stored data to numpy arrays rather than python lists, as per your suggestion. But the plots I'm making don't have more than 50 entries apiece, and I'm not seeing any appreciable speed-up. It still takes ~15 seconds to produce each plot (using PDF backend to save to files). Does anybody have other thoughts on what I might be able to try to bring the lag down to something more reasonable? My use case is that I'm building a library to dump the content of histograms from ROOT (a data analysis package used in physics) into a convenient Hist object that has members to directly plot the data as a matplotlib errorbar or bar plot. You can see the 100 lines I've written here: http://www.hep.wisc.edu/~jklukas/public/root2matplot.py I've tried running a profiler like Mike did, but I'm afraid I'm not able to parse any useful information from it either. I'd appreciate any advice from the community. Thanks, Jeff Output of profiler for producing one single plot: ---------------------------------------------------- Wed Feb 24 15:01:20 2010 timing 6995086 function calls (6983887 primitive calls) in 22.301 CPU seconds Ordered by: cumulative time List reduced from 1080 to 25 due to restriction <25> ncalls tottime percall cumtime percall filename:lineno(function) 1 0.004 0.004 22.301 22.301 ../overlayHists.py:367(main) 20/1 0.139 0.007 21.669 21.669 ../overlayHists.py:123(process_directory) 1 0.001 0.001 21.529 21.529 ../overlayHists.py:231(process_hist_matplotlib) 2 0.000 0.000 21.384 10.692 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/pyplot.py:354(savefig) 2 0.000 0.000 21.384 10.692 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/figure.py:959(savefig) 2 0.000 0.000 21.384 10.692 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/backend_bases.py:1372(print_figure) 2 0.000 0.000 21.373 10.687 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py:2012(print_pdf) 126/2 0.001 0.000 12.314 6.157 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/artist.py:44(draw_wrapper) 2 0.000 0.000 12.314 6.157 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/figure.py:729(draw) 2 0.000 0.000 12.310 6.155 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/axes.py:1632(draw) 4 0.002 0.000 11.940 2.985 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/axis.py:727(draw) 40 0.005 0.000 11.927 0.298 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/text.py:504(draw) 58 0.023 0.000 10.349 0.178 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/dviread.py:805(find_tex_file) 58 0.008 0.000 9.904 0.171 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/subprocess.py:662(communicate) 15059 9.899 0.001 9.899 0.001 {method 'read' of 'file' objects} 2 0.000 0.000 9.051 4.526 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py:447(close) 2 0.001 0.001 9.043 4.521 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py:520(writeFonts) 8 0.008 0.001 9.041 1.130 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py:554(embedTeXFont) 8 0.000 0.000 8.637 1.080 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/type1font.py:47(__init__) 304 0.001 0.000 7.796 0.026 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/dviread.py:50(__iter__) 157/152 0.017 0.000 7.780 0.051 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/dviread.py:114(_read) 5788/3854 0.025 0.000 7.765 0.002 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/dviread.py:146(_dispatch) 116 0.004 0.000 7.751 0.067 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/backends/backend_pdf.py:1643(get_text_width_height_descent) 116 0.002 0.000 7.711 0.066 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/texmanager.py:576(get_text_width_height_descent) 82 0.007 0.000 7.690 0.094 /Library/Frameworks/Python.framework/Versions/6.0.4/lib/python2.6/site-packages/matplotlib/text.py:250(_get_layout) -- View this message in context: http://old.nabble.com/matplotlib-slow-compared-to-gnuplot--tp26302608p27714298.html Sent from the matplotlib - users mailing list archive at Nabble.com. ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users