如果您的x轴上有日期时间对象,那么如何在matplotlib的click事件处理程序中单击哪一个?
当你这样做时:
def onclick2(event):
print event.x
onClickId = figure.canvas.mpl_connect('button_press_event', OnClick2)
我已经尝试过event.x,event.xdata和event._x,它们都返回了整数
答案 0 :(得分:1)
他们可能真的是整数...我相信matplotlib首先将它们转换为整数或浮点数来绘制日期。尝试使用matplotlib dates模块中的num2date
函数和您的事件数据,这可能会产生您想要的效果。
答案 1 :(得分:1)
当我尝试从使用matplotlib绘制的pandas时间索引数据帧返回时间戳x轴数据时,我遇到了类似的问题。在event.xdata上尝试Ajean的num2date建议会返回一个太大而不能作为日期编号的浮点值(例如2014-4-14 2:25为23286385.16)。
为了扩展Ajean的建议,最好先使用matplotlib.dates.date2num
函数将datetime对象转换为numpy.float64。然后你可以使用matplotlib事件处理程序创建的numpy.float64数组作为x轴。然后,可以使用matplotlib.dates.num2date
函数将事件处理程序返回的event.xdata转换回日期时间。
答案 2 :(得分:0)
您应该使用num2date(…)
来获取日期。有关使用方法的示例,请参见this answer。