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

Reply via email to