move annotation

Dear all,

I have a little problem on understanding how to move an annotation on a plot.

My idea is to make a plot where some informations follow the cursor when moving on the data, like you can see in plots from piwik ( http://piwik.org/demo )

In the script in attachment, I can follow the cursor coordinate, change the text of the annotation, but I cannot move it.

I tried several things, but none worked.

If you have any advices, I would be very happy.

···

=============================
Script : try_move_annotate.py

import numpy
import matplotlib
import matplotlib.pyplot as plt

def on_motion(event):
if event.inaxes:
print "before setting position : "
print this_annotation.get_position()
this_annotation.set_text('coordinate : ’ + str(event.x) + ’ ’ + str(event.y))
this_annotation.set_position((event.x, event.y))
print "after setting position : "
print this_annotation.get_position()
ax.draw_artist(this_annotation)
plt.draw()

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(range(10), range(10))
this_annotation = ax.annotate("coordinate : ",
xy = (100,100),
xycoords = ‘figure pixels’,
horizontalalignment = ‘left’,
verticalalignment = ‘top’,
fontsize = 20,
fontweight = ‘bold’,# animated=True,
bbox = dict(boxstyle=“round”, fc=‘black’, ec=“0.5”, alpha=0.5)
)

fig.canvas.mpl_connect(‘motion_notify_event’, on_motion)
plt.show()

END Script

I think the current method names of Annotation class (originally from
the Text class) is a bit confusing.
And this needs to be fixed.
Anyhow, instead of calling set_position method, you need to set the
"xytext" attribute directly.

        this_annotation.xytext = (event.x, event.y)

Regards,

-JJ

···

On Wed, Jan 6, 2010 at 9:49 AM, <charles.roduit@...287...> wrote:

Dear all,

I have a little problem on understanding how to move an annotation on a
plot.

My idea is to make a plot where some informations follow the cursor when
moving on the data, like you can see in plots from piwik (
http://piwik.org/demo )

In the script in attachment, I can follow the cursor coordinate, change the
text of the annotation, but I cannot move it.

I tried several things, but none worked.

If you have any advices, I would be very happy.

=============================
Script : try_move_annotate.py

import numpy
import matplotlib
import matplotlib.pyplot as plt

def on_motion(event):
if event.inaxes:
print "before setting position : "
print this_annotation.get_position()
this_annotation.set_text('coordinate : ' + str(event.x) + ' ' +
str(event.y))
this_annotation.set_position((event.x, event.y))
print "after setting position : "
print this_annotation.get_position()
ax.draw_artist(this_annotation)
plt.draw()

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(range(10), range(10))
this_annotation = ax.annotate("coordinate : ",
xy = (100,100),
xycoords = 'figure pixels',
horizontalalignment = 'left',
verticalalignment = 'top',
fontsize = 20,
fontweight = 'bold',# animated=True,
bbox = dict(boxstyle="round", fc='black', ec="0.5", alpha=0.5)
)

fig.canvas.mpl_connect('motion_notify_event', on_motion)
plt.show()

END Script

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Simply beautiful !

Thank's a lot, it's exactly what I wanted.

···

Le vendredi 08 janvier 2010 à 13:08 -0500, Jae-Joon Lee a écrit :

this_annotation.xytext = (event.x, event.y)