Re: [matplotlib-devel] Bug in 'weights' in axes.hist

2010-07-31 Thread John Hunter
On Thu, Jul 29, 2010 at 6:17 PM, Benjamin Root ben.r...@ou.edu wrote:

 As a side-note, it looks like various files that have been changed due to
 svnmerge.py are still showing themselves as having their properties
 modified.  Is this ok?

Yes, for some reason some of the files, like axes3d examples, are
always tagged with property changes on svn merges.  It's a nuisance.
but harmless.  In the handling of weights vs x, I notice in some
places we call np.array and others np.asarray.  Shouldn't we be using
asarray in all of these cases, eg

Index: lib/matplotlib/axes.py
===
--- lib/matplotlib/axes.py  (revision 8606)
+++ lib/matplotlib/axes.py  (working copy)
@@ -7401,11 +7401,13 @@
  **kwargs):
 
 call signature::
+
+  def hist(x, bins=10, range=None, normed=False, weights=None,
+ cumulative=False, bottom=None, histtype='bar', align='mid',
+ orientation='vertical', rwidth=None, log=False,
+ color=None, label=None,
+ **kwargs):

-  hist(x, bins=10, range=None, normed=False, cumulative=False,
-   bottom=None, histtype='bar', align='mid',
-   orientation='vertical', rwidth=None, log=False, **kwargs)
-
 Compute and draw the histogram of *x*. The return value is a
 tuple (*n*, *bins*, *patches*) or ([*n0*, *n1*, ...], *bins*,
 [*patches0*, *patches1*,...]) if the input contains multiple
@@ -7567,7 +7569,7 @@
 'this looks transposed (shape is %d x %d)' % x.shape[::-1])
 else:
 # multiple hist with data of different length
-x = [np.array(xi) for xi in x]
+x = [np.asarray(xi) for xi in x]

 nx = len(x) # number of datasets

@@ -7582,7 +7584,7 @@
 # We need to do to 'weights' what was done to 'x'
 if weights is not None:
 if isinstance(weights, np.ndarray) or not iterable(weights[0]) :
-w = np.array(weights)
+w = np.asarray(weights)
 if w.ndim == 2:
 w = w.T
 elif w.ndim == 1:
@@ -7590,7 +7592,7 @@
 else:
 raise ValueError(weights must be 1D or 2D)
 else:
-w = [np.array(wi) for wi in weights]
+w = [np.asarray(wi) for wi in weights]

 if len(w) != nx:
 raise ValueError('weights should have the same shape as x')

--
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Bug in 'weights' in axes.hist

2010-07-29 Thread Benjamin Root
On Sun, Jul 25, 2010 at 3:51 PM, Benjamin Root ben.r...@ou.edu wrote:

 On Tue, Jul 20, 2010 at 9:21 AM, Jeff Klukas klu...@wisc.edu wrote:

 Hello,

 The documentation for hist seems to indicate that you should be able
 to send a list of values through the 'weights' parameter in axes.hist,
 and this worked in previous versions.  In 1.0, however, this produces
 an error.  I've attached a diff (also pasted below) that I believe
 produces the expected behavior.

 It can be tested with:
 plt.hist([1,2,3], weights=[1,2,3])

 The above fails in the development version, but works with the diff.
 Could someone add this fix?

 Thanks,
 Jeff

 || Jeff Klukas, Research Assistant, Physics
 || University of Wisconsin -- Madison
 || jeff.klu...@gmail | jeffyklu...@aim | jeffklu...@skype
 || http://klukas.web.cern.ch/


 Index: lib/matplotlib/axes.py
 ===
 --- lib/matplotlib/axes.py  (revision 8565)
 +++ lib/matplotlib/axes.py  (working copy)
 @@ -7587,7 +7587,12 @@
 else:
 raise ValueError(weights must be 1D or 2D)
 else:
 -w = [np.array(wi) for wi in weights]
 +try:
 +weights[0][0]
 +except TypeError:
 +w = [np.array(weights)]
 +else:
 +w = [np.array(wi) for wi in weights]

 if len(w) != nx:
 raise ValueError('weights should have the same shape as
 x')


 Good catch, Jeff.  Looking over the code, looks like both the input data,
 x, and the weights get similar pre-processing done to ready it for
 histogramming. It appears that a fix was made to how x was being processed,
 but the same was not done to weights.  I have a patch that fixes the
 pre-processing of weights, and also  adds comments to both blocks of code to
 remind future developers to make sure changes are made to both chunks of
 code.

 The functional part of the change was to check if the first element of
 weights was an iterable or not.  Before, the weights array as in the given
 example would be considered 1-element weights for 3 datasets, rather than
 3-element weights for 1 dataset.

 Ben Root


Re-pinging on my proposed patch.  Also, should it go into just the trunk, or
should it also go into the branch?

Ben Root
--
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Bug in 'weights' in axes.hist

2010-07-29 Thread Eric Firing
On 07/29/2010 09:31 AM, Benjamin Root wrote:
[...]

 Good catch, Jeff.  Looking over the code, looks like both the input
 data, x, and the weights get similar pre-processing done to ready it
 for histogramming. It appears that a fix was made to how x was being
 processed, but the same was not done to weights.  I have a patch
 that fixes the pre-processing of weights, and also  adds comments to
 both blocks of code to remind future developers to make sure changes
 are made to both chunks of code.

 The functional part of the change was to check if the first element
 of weights was an iterable or not.  Before, the weights array as in
 the given example would be considered 1-element weights for 3
 datasets, rather than 3-element weights for 1 dataset.

 Ben Root


 Re-pinging on my proposed patch.  Also, should it go into just the
 trunk, or should it also go into the branch?

Ben,

Go ahead, trunk and branch, since it is a bugfix.

Thank you.

Eric


 Ben Root


--
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Bug in 'weights' in axes.hist

2010-07-29 Thread Benjamin Root
On Thu, Jul 29, 2010 at 3:39 PM, Eric Firing efir...@hawaii.edu wrote:

 On 07/29/2010 09:31 AM, Benjamin Root wrote:
 [...]
 
  Good catch, Jeff.  Looking over the code, looks like both the input
  data, x, and the weights get similar pre-processing done to ready it
  for histogramming. It appears that a fix was made to how x was being
  processed, but the same was not done to weights.  I have a patch
  that fixes the pre-processing of weights, and also  adds comments to
  both blocks of code to remind future developers to make sure changes
  are made to both chunks of code.
 
  The functional part of the change was to check if the first element
  of weights was an iterable or not.  Before, the weights array as in
  the given example would be considered 1-element weights for 3
  datasets, rather than 3-element weights for 1 dataset.
 
  Ben Root
 
 
  Re-pinging on my proposed patch.  Also, should it go into just the
  trunk, or should it also go into the branch?

 Ben,

 Go ahead, trunk and branch, since it is a bugfix.

 Thank you.

 Eric


Done in r8595 and r8596.

As a side-note, it looks like various files that have been changed due to
svnmerge.py are still showing themselves as having their properties
modified.  Is this ok?

Ben Root
--
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Bug in 'weights' in axes.hist

2010-07-29 Thread Eric Firing
On 07/29/2010 01:17 PM, Benjamin Root wrote:
 On Thu, Jul 29, 2010 at 3:39 PM, Eric Firing efir...@hawaii.edu
 mailto:efir...@hawaii.edu wrote:

 On 07/29/2010 09:31 AM, Benjamin Root wrote:
 [...]
  
   Good catch, Jeff.  Looking over the code, looks like both the
 input
   data, x, and the weights get similar pre-processing done to
 ready it
   for histogramming. It appears that a fix was made to how x
 was being
   processed, but the same was not done to weights.  I have a patch
   that fixes the pre-processing of weights, and also  adds
 comments to
   both blocks of code to remind future developers to make sure
 changes
   are made to both chunks of code.
  
   The functional part of the change was to check if the first
 element
   of weights was an iterable or not.  Before, the weights array
 as in
   the given example would be considered 1-element weights for 3
   datasets, rather than 3-element weights for 1 dataset.
  
   Ben Root
  
  
   Re-pinging on my proposed patch.  Also, should it go into just the
   trunk, or should it also go into the branch?

 Ben,

 Go ahead, trunk and branch, since it is a bugfix.

 Thank you.

 Eric


 Done in r8595 and r8596.

 As a side-note, it looks like various files that have been changed due
 to svnmerge.py are still showing themselves as having their properties
 modified.  Is this ok?

That seems to be the way svnmerge works--it almost always generates an 
alarming list of property changes.

Eric


 Ben Root

--
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Bug in 'weights' in axes.hist

2010-07-25 Thread Benjamin Root
On Tue, Jul 20, 2010 at 9:21 AM, Jeff Klukas klu...@wisc.edu wrote:

 Hello,

 The documentation for hist seems to indicate that you should be able
 to send a list of values through the 'weights' parameter in axes.hist,
 and this worked in previous versions.  In 1.0, however, this produces
 an error.  I've attached a diff (also pasted below) that I believe
 produces the expected behavior.

 It can be tested with:
 plt.hist([1,2,3], weights=[1,2,3])

 The above fails in the development version, but works with the diff.
 Could someone add this fix?

 Thanks,
 Jeff

 || Jeff Klukas, Research Assistant, Physics
 || University of Wisconsin -- Madison
 || jeff.klu...@gmail | jeffyklu...@aim | jeffklu...@skype
 || http://klukas.web.cern.ch/


 Index: lib/matplotlib/axes.py
 ===
 --- lib/matplotlib/axes.py  (revision 8565)
 +++ lib/matplotlib/axes.py  (working copy)
 @@ -7587,7 +7587,12 @@
 else:
 raise ValueError(weights must be 1D or 2D)
 else:
 -w = [np.array(wi) for wi in weights]
 +try:
 +weights[0][0]
 +except TypeError:
 +w = [np.array(weights)]
 +else:
 +w = [np.array(wi) for wi in weights]

 if len(w) != nx:
 raise ValueError('weights should have the same shape as x')


Good catch, Jeff.  Looking over the code, looks like both the input data, x,
and the weights get similar pre-processing done to ready it for
histogramming. It appears that a fix was made to how x was being processed,
but the same was not done to weights.  I have a patch that fixes the
pre-processing of weights, and also  adds comments to both blocks of code to
remind future developers to make sure changes are made to both chunks of
code.

The functional part of the change was to check if the first element of
weights was an iterable or not.  Before, the weights array as in the given
example would be considered 1-element weights for 3 datasets, rather than
3-element weights for 1 dataset.

Ben Root
Index: lib/matplotlib/axes.py
===
--- lib/matplotlib/axes.py	(revision 8574)
+++ lib/matplotlib/axes.py	(working copy)
@@ -7551,6 +7551,8 @@
 'hist now uses the rwidth to give relative width '
 'and not absolute width')
 
+# Massage 'x' for processing.
+# NOTE: Be sure any changes here is also done below to 'weights'
 if isinstance(x, np.ndarray) or not iterable(x[0]):
 # TODO: support masked arrays;
 x = np.asarray(x)
@@ -7577,8 +7579,9 @@
 if len(color) != nx:
 raise ValueError(color kwarg must have one color per dataset)
 
+# We need to do to 'weights' what was done to 'x'
 if weights is not None:
-if isinstance(weights, np.ndarray):
+if isinstance(weights, np.ndarray) or not iterable(weights[0]) :
 w = np.array(weights)
 if w.ndim == 2:
 w = w.T
--
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel