Re: [matplotlib-devel] PATCH: Accept color/alpha in imsave

2012-04-16 Thread Benjamin Root
On Sat, Apr 7, 2012 at 11:25 AM, Jostein Bø Fløystad <
jostein.floys...@gmail.com> wrote:

> I've had problems saving MxNx3 (RGB) numpy arrays as images using
> imsave. It fails with an exception, and the problem seems to be line
> 1243 in image.py:
>
> figsize = [x / float(dpi) for x in arr.shape[::-1]]
>
> The purpose of arr.shape[::-1] seems to be to reorder the height and
> width dimensions. It works as intended for MxN arrays, but not NxMx3
> arrays -- they cause a function to complain about an argument too
> many.
>
> I have modified the above line to use (arr.shape[1], arr.shape[0])
> instead of arr.shape[::-1], and that solves the problem for me, and I
> get the output I expect (and the code still passes all tests it should
> pass). However, there could very well be subtleties in the codebase
> that I don't know about.
>
> The attached patches add a simple test case, the above mentioned
> change and a few updates to the documentation of imsave.
>
> Best,
>
> Jostein.
>
>
Jostein,

That second patch certain fixes that part of the bug, but I still can't
save an NxMx3 (or 4) array using imsave().  Are you sure this is all of the
patch?

I get the following exception:

```
Traceback (most recent call last):
  File "quickshow.py", line 106, in 
plt.imsave(stem + '.png', cm(d))
  File
"/home/broot/.local/lib/python2.7/site-packages/matplotlib-1.2.x-py2.7-linux-x86_64.egg/matplotlib/pyplot.py",
line 1757, in imsave
return _imsave(*args, **kwargs)
  File
"/home/broot/.local/lib/python2.7/site-packages/matplotlib-1.2.x-py2.7-linux-x86_64.egg/matplotlib/image.py",
line 1244, in imsave
fig = Figure(figsize=figsize, dpi=dpi, frameon=False)
  File
"/home/broot/.local/lib/python2.7/site-packages/matplotlib-1.2.x-py2.7-linux-x86_64.egg/matplotlib/figure.py",
line 269, in __init__
self.bbox_inches = Bbox.from_bounds(0, 0, *figsize)
TypeError: from_bounds() takes exactly 4 arguments (5 given)
```

Cheers!
Ben Root
--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


[matplotlib-devel] imsave() and cmap

2012-04-16 Thread Benjamin Root
Thanks to a patch a bit while back for ListedColormap that allowed for
alphas to be given, I should now be able to use imshow() and imsave() with
colormaps.  However, I find that the results are not correct. Particularly,
the alpha values seem to be assigned incorrectly.  I am still working on
making a stand-alone version to demonstrate the problem, but has anyone
else noticed this?

Note,

plt.imshow(d, cmap=cm)

produces an incorrect result while

plt.imshow(cm(d))

produces a correct result.  However, due to a bug in imsave, I can't do the
latter as a work-around.

Thanks,
Ben Root
--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] [Matplotlib-users] Bug in Triangulation causes infinite loop if 4 or more duplicate points are used in tricontour()

2012-04-16 Thread Damon McDougall
On Monday, 16 April 2012 at 16:34, Kacper Kowalik wrote:
>  
> On 16 Apr 2012 22:31, "Damon McDougall"  (mailto:d.mcdoug...@warwick.ac.uk)> wrote:
> >
> > Hi Kacper,
> >
> > Just to be clear, is it tri.Triangulation(x, y) that hangs, or is it 
> > plt.tricontour(…)?  
> It's plt.tricontour that hangs, tri.Triangulation properly issues warning 
> about duplicates.
> Cheers,
> Kacper  
> > On Monday, 16 April 2012 at 14:28, Kacper Kowalik wrote:
> >>
> >> Hi,
> >> I haven't been able to pin point it exactly but following script:
> >>
> >> import matplotlib.pyplot as plt
> >> import matplotlib.tri as tri
> >> import numpy as np
> >> from numpy.random import uniform, seed
> >>
> >> seed(0)
> >> npts = 200
> >> x = uniform(-2,2,npts)
> >> y = uniform(-2,2,npts)
> >> z = x*np.exp(-x**2-y**2)
> >>
> >> y[1:3] = x[0] # 4 or more duplicate points make tricontour hang!!!
> >> x[1:3] = y[0]
You should call z = x*np.exp(-x**2-y**2) _before_ changing the points you're 
triangulating.
Having said that, I see the same behaviour even if I change the vertices before 
I compute z.
> >> triang = tri.Triangulation(x, y)
> >> plt.tricontour(x, y, z, 15, linewidths=0.5, colors='k')
> >>
> >> plt.show()
> >>
> >>
> >> causes infinite loop in _tri.so. It happens in matplotlib-1.1.0 as well
> >> as git HEAD.
> >> I understand that my input is not exactly valid, but I'd rather see MPL
> >> die than occupy my box for eternity ;)
> >> Best regards,
> >> Kacper
I think the reason it's hanging is because you're trying to plot the contours 
of a function that is defined on an invalid triangulation (edges cross at 
points that are not in the vertex set). I think the best way to deal with this 
is to write a helper function to check the triangulation is valid. If it isn't, 
either tri.Triangulation(x, y) should fail, or the plotter should fail.

Anybody else have any suggestions?
  
--
Damon McDougall
d.mcdoug...@warwick.ac.uk (mailto:d.mcdoug...@warwick.ac.uk)
http://damon.is-a-geek.com
B2.39
Mathematics Institute
University of Warwick
Coventry
West Midlands
CV4 7AL
United Kingdom

--
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
___
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel