Matplotlib日期时间在x轴上

4

如果您的x轴上有datetime对象,如何在matplotlib的点击事件处理程序中获取单击哪个对象?

例如,当您执行以下操作时:

def onclick2(event):
    print event.x

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

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

3个回答

2

他们很可能确实是整数...我相信Matplotlib通过先将日期转换为整数或浮点数来绘制图表。尝试使用Matplotlib dates模块中的num2date函数与您的事件数据,这可能会得到您想要的结果。


1

当我尝试从使用matplotlib绘制的pandas时间索引数据帧返回时间戳x轴数据时,遇到了类似的问题。尝试使用Ajean的num2date建议处理event.xdata时,返回的浮点值过大,无法作为日期数值(例如,2014-4-14 2:25 的值为23286385.16)。

为了进一步扩展Ajean的建议,最好先使用matplotlib.dates.date2num函数将datetime对象转换为numpy.float64。然后,您可以使用这个创建的numpy.float64数组作为matplotlib事件处理程序的x轴。然后,从事件处理程序返回的event.xdata可以使用matplotlib.dates.num2date函数再次转换回datetime。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接