Hmm, your code runs just fine for me (of course with different icon,
but I don't think it matters).
Can you try to install the 0.99rc version of mpl and see if it solves
the problem?
Since the error is not reproduced in my side, I have little to help.

Also, try the figimage and see if you see a same error.

Regards,

-JJ



On Mon, Aug 3, 2009 at 7:55 AM, Bas van Leeuwen<leeu...@gmail.com> wrote:
> Hi,
>
> Sorry about the snippet, I will privide working code from now on.
> I found a reproduction path for the error, it occurs (seemingly
> random, but frequent) when there is more than one image in the plot
> and you try to zoom. Code:
>
> import Image
> from pylab import *
> im = Image.open("icon.png")
>
> ax = subplot(111)
> limx = ax.set_xlim((-5, 15))
> limy = ax.set_ylim((-5, 15))
> ax.set_autoscale_on(False)
>
> [x0, y0], [x1, y1] = ax.bbox.get_points()
>
> datawidth = limx[1] - limx[0]
> dataheight = limy[1] - limy[0]
> pixelwidth = x1 - x0
> pixelheight = y1 - y0
> adaptedwidth = im.size[0] * (datawidth / pixelwidth)
> adaptedheight = im.size[1] * (dataheight / pixelheight)
>
> for i in range(0,10,2):
>    ax.imshow(im, origin="lower",
>             extent=(i, i + adaptedwidth, i, i + adaptedheight))
>
> plt.draw()
> show()
>
> Thank you very much for the support!
> Bas
>
> PS, @John, I'd like to try the imshow approach first because it is not
> in a figure but in a QT frame containing several subplots. But thank
> youfor the suggestion, I will try if the imshow approach appears
> fruitless.
>
>
> 2009/8/2 Jae-Joon Lee <lee.j.j...@gmail.com>:
>> A snippet of code does not help in general.
>> Please take your time to create a simple, standalone code that
>> reproduces your problem and post that code in this mailing list so
>> that we can easily test.
>>
>> Here is the code, based on yours, that works for me.
>>
>>    im = Image.open("icon.jpg")
>>
>>    ax = gca()
>>    limx = ax.get_xlim()
>>    limy = ax.get_ylim()
>>    ax.set_autoscale_on(False)
>>
>>    [x0, y0], [x1, y1] = ax.bbox.get_points()
>>
>>    datawidth = limx[1] - limx[0]
>>    dataheight = limy[1] - limy[0]
>>    pixelwidth = x1 - x0
>>    pixelheight = y1 - y0
>>    adaptedwidth = im.size[0] * (datawidth/pixelwidth)
>>    adaptedheight = im.size[1] * (dataheight/pixelheight)
>>
>>    ax.imshow(im, origin="lower",
>>              extent=(0.5, 0.5+adaptedwidth, 0.5, 0.5+adaptedheight))
>>
>>
>>    plt.draw()
>>
>> -JJ
>>
>>
>>
>> On Fri, Jul 31, 2009 at 3:44 PM, Bas van Leeuwen<leeu...@gmail.com> wrote:
>>> Hello,
>>>
>>> I tried to implement a solution for this issue. Basically I want to
>>> give the x and y position in datacoords and the width + height in
>>> pixels.
>>> However, when using the following code:
>>>
>>>            im = Image.open("../Icons/Program Icon.png")
>>>
>>>            limx = self.mainAxes.get_xlim()
>>>            limy = self.mainAxes.get_ylim()
>>>
>>>            [x0, y0], [x1, y1] = self.mainAxes.bbox.get_points()
>>>
>>>            datawidth = limx[1] - limx[0]
>>>            dataheight = limy[1] - limy[0]
>>>            pixelwidth = x1 - x0
>>>            pixelheight = y1 - y0
>>>            adaptedwidth = im.size[0] * (datawidth/pixelwidth)
>>>            adaptedheight = im.size[1] * (dataheight/pixelheight)
>>>
>>>
>>>            for peak in Blocks.peaks(self.quote.Close,
>>> self.peakSpanSlider.value()):
>>>                self.mainAxes.imshow(im, origin = 'lower', extent =
>>> (date2num(peak.datetime), date2num(peak.datetime) + 100 , 400, 425)) #
>>> left right bottom top
>>>            self.mainAxes.set_xlim(limx)
>>>            self.mainAxes.set_ylim(limy)
>>>
>>> There is no visible result. When zooming in to a place where an image
>>> should be present I encounter the following error every time I move
>>> the mouse.
>>>
>>> Traceback (most recent call last):
>>>  File "C:\Python25\lib\site-packages\matplotlib\backends\backend_qt4.py",
>>> line 135, in mouseReleaseEvent
>>>    FigureCanvasBase.button_release_event( self, x, y, button )
>>>  File "C:\Python25\lib\site-packages\matplotlib\backend_bases.py",
>>> line 1198, in button_release_event
>>>    self.callbacks.process(s, event)
>>>  File "C:\Python25\lib\site-packages\matplotlib\cbook.py", line 155, in 
>>> process
>>>    func(*args, **kwargs)
>>>  File "C:\Python25\lib\site-packages\matplotlib\backend_bases.py",
>>> line 2048, in release_zoom
>>>    self.draw()
>>>  File "C:\Python25\lib\site-packages\matplotlib\backend_bases.py",
>>> line 2070, in draw
>>>    self.canvas.draw()
>>>  File "C:\Python25\lib\site-packages\matplotlib\backends\backend_qt4agg.py",
>>> line 133, in draw
>>>    FigureCanvasAgg.draw(self)
>>>  File "C:\Python25\lib\site-packages\matplotlib\backends\backend_agg.py",
>>> line 279, in draw
>>>    self.figure.draw(self.renderer)
>>>  File "C:\Python25\lib\site-packages\matplotlib\figure.py", line 772, in 
>>> draw
>>>    for a in self.axes: a.draw(renderer)
>>>  File "C:\Python25\lib\site-packages\matplotlib\axes.py", line 1545, in draw
>>>    im.draw(renderer)
>>>  File "C:\Python25\lib\site-packages\matplotlib\image.py", line 233, in draw
>>>    im = self.make_image(renderer.get_image_magnification())
>>>  File "C:\Python25\lib\site-packages\matplotlib\image.py", line 220,
>>> in make_image
>>>    rx = widthDisplay / numcols
>>> ZeroDivisionError: float division
>>>
>>> Any idea what might cause this issue? Did I do something wrong? I know
>>> it's not pretty, but it should work right?
>>>
>>> Cheers!
>>> Bas
>>>
>>>
>>>
>>> 2009/7/30 Bas van Leeuwen <leeu...@gmail.com>:
>>>> Hi JJ,
>>>>
>>>> Thank you for your kind and speedy reply, I completely glanced over
>>>> the extent parameter.
>>>> Datacoords are actually what I need so this is perfect for me.
>>>>
>>>> To clarify what I want, I want to mark certain parts of a graph with
>>>> an icon representing the reason it's interesting. Icons are for peaks,
>>>> trends, correlation, etc.
>>>>
>>>> Thank you very much!
>>>>
>>>> Bas
>>>>
>>>>
>>>> 2009/7/30 Jae-Joon Lee <lee.j.j...@gmail.com>:
>>>>> The location of the image can be set by specifying the "extent"
>>>>> keyword, however, this is set in data coordinate.
>>>>> figimage may be close to what you want.
>>>>>
>>>>> http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.figimage
>>>>>
>>>>> As far as I know, there is no direct support in matplotlib to place an
>>>>> image with arbitrary transformation. But it may not be difficult to
>>>>> implement. However, "annotate a plot with icons" is not enough to
>>>>> figure out what you really want.
>>>>> Maybe some screenshots from other plotting tool will be helpful. Or,
>>>>> please elaborate how you want to position your image.
>>>>>
>>>>> -JJ
>>>>>
>>>>>
>>>>> On Thu, Jul 30, 2009 at 12:11 PM, Bas van Leeuwen<leeu...@gmail.com> 
>>>>> wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> Is there any way to annotate a plot with icons?
>>>>>> The only way to include an image that I've found is using imshow, but
>>>>>> imshow does not accept (x,y) coordinates.
>>>>>>
>>>>>> There probably is an easy solution, but I have not been able to find
>>>>>> any. Please be patient :-)
>>>>>>
>>>>>> Thank you in advance for your reply,
>>>>>> Bas van Leeuwen
>>>>>>
>>>>>> PS, I'm sorry if this mail arrives multiple times, I didn't see the
>>>>>> previous one in the archive.
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 
>>>>>> 30-Day
>>>>>> trial. Simplify your report design, integration and deployment - and 
>>>>>> focus on
>>>>>> what you do best, core application coding. Discover what's new with
>>>>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>>>>> _______________________________________________
>>>>>> Matplotlib-users mailing list
>>>>>> Matplotlib-users@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>>>>
>>>>>
>>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>>> trial. Simplify your report design, integration and deployment - and focus 
>>> on
>>> what you do best, core application coding. Discover what's new with
>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>> _______________________________________________
>>> Matplotlib-users mailing list
>>> Matplotlib-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>
>>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to