Python 向matplotlib plot动态添加垂直线
我试图在用户单击特定点时,动态地向matplotlib绘图添加垂直线Python 向matplotlib plot动态添加垂直线,python,matplotlib,Python,Matplotlib,我试图在用户单击特定点时,动态地向matplotlib绘图添加垂直线 import matplotlib.pyplot as plt import matplotlib.dates as mdate class PointPicker(object): def __init__(self,dates,values): self.fig = plt.figure() self.ax = self.fig.add_subplot(111)
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
class PointPicker(object):
def __init__(self,dates,values):
self.fig = plt.figure()
self.ax = self.fig.add_subplot(111)
self.lines2d, = self.ax.plot_date(dates, values, linestyle='-',picker=5)
self.fig.canvas.mpl_connect('pick_event', self.onpick)
self.fig.canvas.mpl_connect('key_press_event', self.onpress)
def onpress(self, event):
"""define some key press events"""
if event.key.lower() == 'q':
sys.exit()
def onpick(self,event):
x = event.mouseevent.xdata
y = event.mouseevent.ydata
print self.ax.axvline(x=x, visible=True)
x = mdate.num2date(x)
print x,y,type(x)
if __name__ == '__main__':
import numpy as np
import datetime
dates=[datetime.datetime.now()+i*datetime.timedelta(days=1) for i in range(100)]
values = np.random.random(100)
plt.ion()
p = PointPicker(dates,values)
plt.show()
这里有一个(几乎)有效的例子。当我单击一个点时,确实调用了onpick
方法,数据似乎是正确的,但没有显示垂直线。我需要做什么才能显示垂直线
谢谢您需要更新画布绘图(
self.fig.canvas.draw()
):
我认为你不需要
添加线
,只需要绘图
def onpick(self,event):
x = event.mouseevent.xdata
y = event.mouseevent.ydata
L = self.ax.axvline(x=x)
self.fig.canvas.draw()