Python &引用;便签;在matplotlib中

Python &引用;便签;在matplotlib中,python,python-2.7,numpy,matplotlib,Python,Python 2.7,Numpy,Matplotlib,我想在我的matplotlib绘图中加入一些文字,其中包含信息或提示,如“stickynotes”。这是我到目前为止的代码: import numpy as np import matplotlib.pyplot as plt x = np.arange(0, 5, 0.1); y = np.sin(x) plt.text(2 , 0.5, s = "Here´s a note", bbox = dict(facecolor = "red")) plt.plot(x, y) plt.sh

我想在我的matplotlib绘图中加入一些文字,其中包含信息或提示,如“stickynotes”。这是我到目前为止的代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)

plt.text(2 , 0.5, s = "Here´s a note", bbox = dict(facecolor = "red"))


plt.plot(x, y)
plt.show()
如您所见,我使用matplotlib库的一个模块放置了一个“粘滞便笺”,但我要做的是放置“便笺”,并使用鼠标在绘图周围替换它。是否有任何模块可供我使用?我怎样才能做到这一点


感谢您的时间和回答。

看看可拖动的注释

举个简单的例子:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)

fig, ax = plt.subplots()

ann = ax.annotate("Here's a note", xy=(2, 0.5), bbox=dict(facecolor='yellow'))
ann.draggable()

ax.plot(x, y)
plt.show()

看看可拖动的注释

举个简单的例子:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)

fig, ax = plt.subplots()

ann = ax.annotate("Here's a note", xy=(2, 0.5), bbox=dict(facecolor='yellow'))
ann.draggable()

ax.plot(x, y)
plt.show()

除了Joe的答案之外,另一个途径是,如果您想在后端完成一些额外的工作,则为“单击画布”事件分配一个函数:

import numpy as np
import matplotlib.pyplot as plt

def click(event):
    global note
    note_x  = event.xdata
    note_y = event.ydata

    # remove your old note
    note.remove()
    # add a new one and redraw the figure
    note = plt.text(note_x , note_y, s = "Here's a note", bbox = dict(facecolor = "red"))
    plt.draw()


fig = plt.figure()
fig.canvas.mpl_connect('button_press_event', click)     


x = np.arange(0, 5, 0.1);
y = np.sin(x)


plt.plot(x,y)
note = plt.text(2 , 0.5, s = "Here's a note", bbox = dict(facecolor = "red"))
plt.show()

除了Joe的答案之外,另一个途径是,如果您想在后端完成一些额外的工作,则为“单击画布”事件分配一个函数:

import numpy as np
import matplotlib.pyplot as plt

def click(event):
    global note
    note_x  = event.xdata
    note_y = event.ydata

    # remove your old note
    note.remove()
    # add a new one and redraw the figure
    note = plt.text(note_x , note_y, s = "Here's a note", bbox = dict(facecolor = "red"))
    plt.draw()


fig = plt.figure()
fig.canvas.mpl_connect('button_press_event', click)     


x = np.arange(0, 5, 0.1);
y = np.sin(x)


plt.plot(x,y)
note = plt.text(2 , 0.5, s = "Here's a note", bbox = dict(facecolor = "red"))
plt.show()

该代码在当前形式下无法工作-您需要在callbackOops中重新绘制画布,谢谢您的帮助。在Spyder中编码让你有时走捷径。。。我已经进行了编辑,以显式显示和重画该图。该代码在其当前形式下无法工作-您需要在Callbackoop中重画画布,感谢您的帮助。在Spyder中编码让你有时走捷径。。。我已经编辑以明确显示和重画该图。谢谢你的回答,这对我帮助很大。我可以拖动便条,但你只能移动一次。但是,这正是我想做的。非常感谢。你应该能够移动它不止一次。。。某些内容一定无法正常工作。您知道是否有任何方法可以使用PyQt4中的“QTextEdit”来编写便笺,并获取用于粘贴便笺的文本?或者只是如何从中获取文本?顺便说一下,这是一个配置问题,现在我每次都可以移动它。谢谢你的回答,这对我帮助很大。我可以拖动便条,但你只能移动一次。但是,这正是我想做的。非常感谢。你应该能够移动它不止一次。。。某些内容一定无法正常工作。您知道是否有任何方法可以使用PyQt4中的“QTextEdit”来编写便笺,并获取用于粘贴便笺的文本?或者只是如何从中获取文本?顺便说一下,这是一个配置问题,现在我每次都可以移动它。