Python 试图使用Tkinter中Matplotlib的MouseeEvent中的日期时间
我有一个数据绘图(使用Python 试图使用Tkinter中Matplotlib的MouseeEvent中的日期时间,python,datetime,matplotlib,tkinter,mouseevent,Python,Datetime,Matplotlib,Tkinter,Mouseevent,我有一个数据绘图(使用matplotlib和Tkinter)并创建了一个函数,该函数响应用户单击绘图上的一个点。我让程序返回正确的y值(因为它只是一个浮点类型)。但是,我的x轴有datetime类型数据,当我要求它打印x值时,它会打印numpy.float64类型。我希望使用用户选择的datetime值,但我需要先访问它 返回的x值的一个示例:735764.731698 下面是处理onpick事件的函数 import matplotlib.pyplot as plt from Tkinter i
matplotlib
和Tkinter
)并创建了一个函数,该函数响应用户单击绘图上的一个点。我让程序返回正确的y值(因为它只是一个浮点类型)。但是,我的x轴有datetime
类型数据,当我要求它打印x值时,它会打印numpy.float64
类型。我希望使用用户选择的datetime值,但我需要先访问它
返回的x值的一个示例:735764.731698
下面是处理onpick事件的函数
import matplotlib.pyplot as plt
from Tkinter import *
from PIL import ImageTk, Image
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import numpy as np
from images_to_list import images_to_list
from tkFileDialog import askopenfilename, askdirectory
import matplotlib.dates as mdates
def onpick(self,event):
im=Image.open('C:\Carbonite\EL_36604.02_231694\EL_36604.02_231694_2015-06-15 10.39.57.jpeg')
im.show()
x = event.mouseevent.xdata
y = event.mouseevent.ydata
x1 = event.mouseevent.x
y1 = event.mouseevent.y
dataind = event.ind[0]
print type(x),x,y,x1,y1, len(event.ind)
return True
#Action Creating the UI and running the program
app = App(extra)
app.canvas.mpl_connect('pick_event', app.onpick)
extra.mainloop()
以下是选择点时的输出示例:
%run "C:\Carbonite\Main_interface_file.py"
<type 'numpy.float64'> 735764.732134 1.93689320388 499 242.0 1
%运行“C:\Carbonite\Main\u interface\u file.py”
735764.732134 1.93689320388 499 242.0 1
内部mpl转换日期->浮动(它知道如何打印)并转换回日期时间以标记轴。这里需要的功能是
前
还要注意,mpl内部使用的浮动表示法是0001-01-01之后的浮动天数
import matplotlib.dates as mdate
dt = mdate.num2date(num)
In [222]: mdate.num2date(735764.732134).isoformat()
Out[222]: '2015-06-15T17:34:16.377604+00:00'