Matplotlib在x轴上的日期时间

时间:2015-03-02 03:02:15

标签: python graph matplotlib

如果您的x轴上有日期时间对象,那么如何在matplotlib的click事件处理程序中单击哪一个?

当你这样做时:

def onclick2(event):
    print event.x

onClickId = figure.canvas.mpl_connect('button_press_event', OnClick2)

我已经尝试过event.x,event.xdata和event._x,它们都返回了整数

3 个答案:

答案 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