Graph Dates and Values
brianlong at cox.net
Tue Mar 10 18:54:57 CET 2009
On Mar 10, 9:44 am, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> En Tue, 10 Mar 2009 13:32:10 -0200, brianrpsgt1 <brianl... at cox.net>
> > On Mar 10, 7:40 am, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> > wrote:
> >> En Tue, 10 Mar 2009 05:08:41 -0200, brianrpsgt1 <brianl... at cox.net>
> >> escribió:
> >> > I am trying to plot dates and values on a graph using matplotlib.
> >> > Below is the code. I can run this and it works great, until I get to
> >> > about 2000 rows from the DB. Things really start to slow down. I
> >> > have successfully plotted up to 5000 rows from the DB, but it is very
> >> > slow. I am attempting to plot values for a day, which would be equal
> >> > to 84600 records. Is there a more efficient may to accomplish this?
> >> Without looking at the matplotlib docs, the above  suggests that both
> >> date2num and plt.plot take a list of values to act upon, and you're
> >> feeding one point at a time. Probably you end up creating one series
> >> per
> >> point (instead of a single series with many points). I guess something
> >> like this should work:
> >> x, y = zip(*value_data) # "transpose"
> >> dates = mdates.date2num(x)
> >> plt.plot(dates, y, 'bo', ms=6)
> > Thanks for the notes. That is exactly what I thought the problem
> > was. Here is an update. I put a limit to 100 on the SQL Query to
> > test. When I run your code, I get the data returned, however, I get
> > the same return equal to the limit I set. In other words, when I run
> > with a limit of 100, I get the same result 100 times. Which would
> > mean that when I try to run a whole day (86400 :) - it was late!), I
> > am getting the same result 86400 times and then it is tyring to plot
> > that.
> > Output below:
> > [ 733414.06489583 733414.06490741 733414.06491898 733414.06493056 ...
> > 733414.06600694 733414.06601852 733414.06603009 733414.06604167]
> > (95, 95, 95, 95, ... 95, 95, 95, 94)
> > If I run this code:
> > for s in value_data:
> > x = mdates.date2num([s])
> > y = [s]
> > print [x, y]
> > The results returned are the following:
> > There are 100 rows in the database
> > [ 733414.06489583] 
> > [ 733414.06490741] 
> > [ 733414.06491898] 
> > [ 733414.06493056]  ...
> > [ 733414.06600694] 
> > [ 733414.06601852] 
> > [ 733414.06603009] 
> > [ 733414.06604167] 
> Well, both look the same values to me... what's wrong? Why do you say "the
> same results 100 times".
> Oh, the code fragment I posted is suposed to *replace* the original for
> loop. Don't put it inside a loop.
> Gabriel Genellina
Thank you very much!!! That was it, I had it in the loop. I works
great now!! Graphs are coming up right away.
More information about the Python-list