"粘滞便笺"在matplotlib中

时间:2016-01-11 20:54:44

标签: 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.show()

正如你所看到的,我把一个" stickynote"使用matplotlib库的一个模块,但我想要做的是把#34;注意"并在剧情周围使用鼠标移动它。我可以使用任何模块吗?我怎样才能做到这一点?

感谢您的时间和答案。

2 个答案:

答案 0 :(得分:2)

查看可拖动的注释。

作为一个简单的例子:

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()

答案 1 :(得分:1)

除了乔的答案之外,另一个途径是将一个功能分配给"点击画布"如果你想在后端做一些额外的工作,那就是事件:

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()