I agree with Jae-Joon here -- try to reduce the number of points before

passing it to matplotlib.

However, I'm a little concerned about the segfault -- I'd rather matplotlib

give a MemoryError exception if that's in fact what is happening. Jae-Joon

-- can you share your test that causes the segfault?

The snippet below completely hogs my machine for a few minutes, but then,

correctly, aborts with a MemoryError.

This is on FC11 i586, Python 2.6, Numpy 1.3.

====

from matplotlib.pyplot import *

import numpy as np

points = np.random.random((50000000, 2))

plot(points)

show()

Yes, I also got MemoryError in this case during the plot() call.

But I got segfault for the code below.

In this case, plot() runs fine, but segfault during show().

I wonder if you can reproduce this.

====

Mike

On 07/01/2009 01:34 PM, Jae-Joon Lee wrote:

A snippet of code does not help much.

Please try to post a small concise standalone example that we can run and

test.

A general advise is to try to reduce the number of plot call, i.e.,

plot as may points as possible with a single plot call.

However, 50million points seems to be awful a lot.

6 inch x 6 inch figure with dpi=100 has 0.36 million number of pixels.

My guess is that it makes little sense to plot 50 million points here.

Anyhow, plotting 50million points with a single plot call dies with

some segfault error in my machine. So, I feel that matplotlib may not

be suitable for your task. But, John or others may have some insight

how to deal with.

Regards,

-JJ

On Tue, Jun 30, 2009 at 1:22 PM, Markus Feldmann<feldmann_markus@...2666.....> >> wrote:

Hi All,

my program lets slow down my cpu. This only appears if i plot to much

points. I am not sure how many point i need to get this, normally i plot

3*14e6 + 8e3, that is round about 50million points. My system is a

dual core 2GHz cpu with 2Gbyte Ram.

Here is my method to plot,

def drawtransientall(self,min):

self.subplot = self.figure.add_subplot(111)

self.subplot.grid(True)

list_t1,list_peaks,t2,list_samples =

self.computetransientall(min,min+self.maxitems)

offset = 0

color = ['green','red','blue','magenta','cyan']

markerPeaks = ['v','<','1','3','s']

markerSamples = ['^','>','2','4','p']

self.plots=[[],[]]

for i in range(len(self.showBands)):

self.plots[0] +=

self.subplot.plot(list_t1[i],list_peaks[i],color=color[i],marker=markerPeaks[i],

linestyle='None')

self.plots[1] +=

self.subplot.plot(t2,list_samples[i]+offset,color=color[i],

marker=markerSamples[i],linestyle='None')

offset +=1

self.subplot.set_xlim(t2[0]-np.abs(t2[-1]-t2[0])/100,t2[-1]+np.abs(t2[-1]-t2[0])/100)

ymax = np.amax(list_samples)

ymin = np.amin(list_samples)

self.subplot.set_ylim([ymin-np.abs(ymin)*0.1, ymax*1.2 + 2])

self.subplot.set_ylabel("abs(Sample(t)) und

abs(Peak(t)+Offset)-->",fontsize = 12)

self.subplot.set_xlabel("Zeit in Sek. -->",fontsize = 12)

Any ideas how to avoid the slow down of my cpu ?

regards Markus

------------------------------------------------------------------------------

_______________________________________________

Matplotlib-users mailing list

Matplotlib-users@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-users

------------------------------------------------------------------------------

_______________________________________________

Matplotlib-users mailing list

Matplotlib-users@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-users