[matplotlib-devel] hexbin, mincnt

2009-01-12 Thread T J
It looks like mincnt is used only when C is not None.  For the default
histogram method, I've found it useful to be able to turn off cells
with fewer then *mincnt* points.  Attached is a diff which implements
this.  Also, should *marginals* be True by default?  It seems that
hexbin is an alternative to scatter and since scatter doesn't have it,
then hexbin should not have it either.
Index: lib/matplotlib/axes.py
===
--- lib/matplotlib/axes.py	(revision 6777)
+++ lib/matplotlib/axes.py	(working copy)
@@ -5395,9 +5395,6 @@
 d1 = (x-ix1)**2 + 3.0 * (y-iy1)**2
 d2 = (x-ix2-0.5)**2 + 3.0 * (y-iy2-0.5)**2
 bdist = (d1--
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] hexbin, mincnt

2009-01-12 Thread John Hunter
On Mon, Jan 12, 2009 at 3:29 AM, T J  wrote:
> It looks like mincnt is used only when C is not None.  For the default
> histogram method, I've found it useful to be able to turn off cells
> with fewer then *mincnt* points.  Attached is a diff which implements
> this.  Also, should *marginals* be True by default?  It seems that
> hexbin is an alternative to scatter and since scatter doesn't have it,
> then hexbin should not have it either.

Thanks for the mincnt patch, I've applied it to svn head and made
marginals False -- I *thought* I made it False when adding it, so this
was just a screwup.

JDH

--
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


[matplotlib-devel] Jagged plot in macosx backend

2009-01-12 Thread Tony Yu
There appears to be a bug in the macosx backend. When I plot large  
numbers with small variations in the value, the numbers seem to be  
coarsely rounded off. This bug doesn't appear with other backends (I  
tried WxAgg and TkAgg). Below is a simple script showing the problem  
and the resulting plot on the macosx backend.


Thanks,
-Tony

Mac OS X 10.5.6
Matplotlib svn r6779

#

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1)
plt.plot(x, x + 1e6)
plt.show()<>--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Matplotlib patch on EPD trac?

2009-01-12 Thread Dave Peterson

Ryan May wrote:

John Hunter wrote:
  

Ryan May has been doing all the heavy lifting with respect to PSD and
specgram, so I am going to turf this to him :-)  It may be that the
bug filer's problems are resolved in the recent changes in 98.5.2, but
 Ryan should confirm

On Fri, Jan 9, 2009 at 2:45 PM, Dave Peterson  wrote:


Hi John,

Sorry for sending this directly, but I'm still waiting for my matplotlib
devel mailing subscription to go through

We've just had an EPD user submit a patch for matplotlib to 'fix' a problem
they were seeing with the PSD function.  Is this a known issue or something
that you'd be interested in including in future versions of matplotlib?   Or
is it something that you disagree is 'right'?

  https://svn.enthought.com/epd/ticket/581

I'd like to know to do the right thing with the matplotlib we include in
EPD. :-)
  


Specgram specifically handles the case of moving frequencies to -Fs/2 to Fs/2,
instead of 0 to Fs.  It was this way before I did any of my changes and I just
left it as it was.  Psd returns frequencies 0 to Fs for Matlab compatibility (I
think anyways, John?).  Personally, I'd also prefer to have -Fs/2 to Fs/2
returned as well, so I don't have to do it in my own code.  However, I'm also
loath to add yet another flag to toggle Matlab compatibility.

As far as the patch goes, it looks fine.  It won't work as is with the
refactoring I've already done in SVN, but it wouldn't be hard to implement the
changes, if we decide to go that way.

Maybe it's time to refactor here to get routine(s) that operate how we want (IMO
more sanely than Matlab), and we provide wrappers that give Matlab-like 
behavior.
  Maybe we can also get these sane routines upstream into Scipy. At that point,
however, I'm not sure what to do about the plotting functions, since there's a
variety of behavior.

Thoughts?

Ryan
  


Hi Guys,

I'm not sure what's going on with my subscription request e-mail.  So 
I'll reply-all and see what happens...


I can't speak too strongly about what should be there but I certainly 
like Ryan's idea of getting more sane behavior and simultaneously 
providing a wrapper / second API entry point to get the Matlab 
compatible behavior.  

As far as EPD goes, since this didn't result in a "yes, we'll apply it" 
response, we'll hold off on applying this patch to the matplotlib build 
we ship inside EPD until you guys figure out which way you're headed.
It clearly seems wrong to have different, non-bug, behavior between your 
releases and EPD.



-- Dave
--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Matplotlib patch on EPD trac?

2009-01-12 Thread Paul Kienzle

On Jan 9, 2009, at 6:12 PM, Ryan May wrote:

> Maybe it's time to refactor here to get routine(s) that operate how  
> we want (IMO
> more sanely than Matlab), and we provide wrappers that give Matlab- 
> like behavior.
>   Maybe we can also get these sane routines upstream into Scipy. At  
> that point,
> however, I'm not sure what to do about the plotting functions,  
> since there's a
> variety of behavior.

My policy when working on Octave was to avoid inventing new  
interfaces when the existing interfaces are good enough.  This  
doesn't apply to the same degree in pylab of course because there is  
little hope of running matlab code directly off the net, but it still  
helps users if things with the same name share the same interface.   
It would not be good if importing psd from the matlab compatibility  
package gave a different interface than the same function name  
imported directly from mpl or scipy.

In terms of refactoring, consider having a spectral density object.   
The following properties of psd naturally lends itself to an object  
interface:

   * a number of related functions (psd, csd, transfer function,  
coherence) can be calculated from the same internal state
   * the state can be fed new inputs and updated frame by frame,
   * confidence intervals may or may not be requested,
   * data can be plotted in multiple ways
   * users may want to extract the data for further processing

It would be pretty easy to build the matlab interface on top of such  
an object.

   - Paul


--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Matplotlib patch on EPD trac?

2009-01-12 Thread Ryan May
Paul Kienzle wrote:
> 
> On Jan 9, 2009, at 6:12 PM, Ryan May wrote:
> 
>> Maybe it's time to refactor here to get routine(s) that operate how we
>> want (IMO
>> more sanely than Matlab), and we provide wrappers that give
>> Matlab-like behavior.
>>   Maybe we can also get these sane routines upstream into Scipy. At
>> that point,
>> however, I'm not sure what to do about the plotting functions, since
>> there's a
>> variety of behavior.
> 
> My policy when working on Octave was to avoid inventing new interfaces
> when the existing interfaces are good enough.  This doesn't apply to the
> same degree in pylab of course because there is little hope of running
> matlab code directly off the net, but it still helps users if things
> with the same name share the same interface.  It would not be good if
> importing psd from the matlab compatibility package gave a different
> interface than the same function name imported directly from mpl or scipy.

I agree 100%.  My thoughts were having a flexible, yet simple and 
straightforward
implementation in scipy/matplotlib, and reimplement psd() on top of that.  I
don't think psd is a good name anyways, since it is specifically based on the
welch method. While general, this is only 1 way of estimating the psd of the 
signal.

> In terms of refactoring, consider having a spectral density object.  The
> following properties of psd naturally lends itself to an object interface:
> 
>   * a number of related functions (psd, csd, transfer function,
> coherence) can be calculated from the same internal state
>   * the state can be fed new inputs and updated frame by frame,
>   * confidence intervals may or may not be requested,
>   * data can be plotted in multiple ways
>   * users may want to extract the data for further processing
> 
> It would be pretty easy to build the matlab interface on top of such an
> object.

I hadn't thought of an OO interface, but that's not usually my primary way of
thinking.  It actually sounds like a good way to go, and is, in fact, the way
MatLab has gone now.  It would also allow making a class hierarchy that uses
different methods for doing these calculation (plain periodogram, welch's 
method,
etc.).

Some food for thought anyways.

Ryan

-- 
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma

--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


[matplotlib-devel] refactoring for units; was Re: John: Thoughts on a standard test system

2009-01-12 Thread Eric Firing
John Hunter wrote:

> On the issue of units (not unit testing but unit support which is
> motivating your writing of unit test) I think we may need a new
> approach.  The current approach is to put unitized data into the
> artists, and update the converted data at the artist layer.  I don't
> know that this is the proper design.  For this approach to work, every
> scalar and array quantity must support units at the artist layer, and
> all the calculations that are done at the plotting layer (eg error
> bar) to setup these artists must be careful to preserve unitized data
> throughout.  So it is burdensome on the artist layer and on the
> plotting function layer.
> 
> The problem is compounded because most of the other developers are not
> really aware of how to use the units interface, which I take
> responsibility for because they have oft asked for a design document,
> which I have yet to provide because I am unhappy with the design.  So
> new code tends to break functions that once had unit support.  Which
> is why we need unit tests 
> 
> I think everything might be  easier if mpl had an intermediate class
> layer PlotItem for plot types, eg XYPlot, BarChart, ErrorBar as we
> already do for Legend.  The plotting functions would instantiate these
> objects with the input arguments and track unit data through the
> reference to the axis.  These plot objects would contain all the
> artist primitives which would store their data in native floating
> point, which would remove the burden on the artists from handling
> units and put it all in the plot creation/update logic.  The objects
> would store references to all of the original inputs, and would update
> the primitive artists on unit changes.  The basic problem is that the
> unitized data must live somewhere, and I am not sure that the low
> level primitive artists are the best place for that -- it may be a
> better idea to keep this data at the level of a PlotItem and let the
> primitive artists handle already converted floating point data.  This
> is analogous to the current approach of passing transformed data to
> the backends to make it easier to write new backends.  I need to chew
> on this some more.

John,

I think that getting unit support out of the basic artists, and keeping 
it at a higher level, is an excellent idea.  Right now, unit support is 
sprinkled all over, and one never knows exactly where it will be or what 
to expect.  Most of it works, but some doesn't.  (I just fixed a part 
that didn't.)

One could go a little farther with this and require that more of the 
argument checking and regularization be done above the artist level as 
well; so that the artists could count on arrays of coordinates being 
ndarrays or masked arrays, for example.  Whether the resulting code 
simplification would be worth the extra care required in using the 
artists, I don't know.

I also like the PlotItem concept as a way to get Axes under control and 
slimmed down.  It is the approach taken with Quiver, Contour, and 
Colorbar, so there is more precedent than just Legend.

I'm not sure that a complete PlotItem-ization is required for localizing 
the unit support at a higher level than the basic artists; maybe it can 
be done piecemeal.  A complete one-shot reworking would be a big job, 
requiring a lot of testing.

Eric

--
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel