2015-03-02 4 views
0

Если у вас есть объекты datetime на оси x, как вы можете получить, какой из них был нажат на обработчик события click для matplotlib?Matplotlib datetime на оси x

Т.е. когда вы делаете это:

def onclick2(event): 
    print event.x 

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

Я попытался event.x, event.xdata и event._x и все они возвращаются Интс

ответ

0

Я столкнулся с подобной проблемой при попытке вернуть данные оси x с временной отметкой из фрейма данных с индексом панд, построенных с использованием matplotlib. Попытка предложения num2date Ajean на event.xdata возвращает значение с плавающей точкой, которое слишком велико, чтобы быть номером даты (например, 23286385.16 для 2014-4-14 2:25).

Чтобы расширить предложение Ajean, лучше сначала преобразовать объект datetime в numpy.float64, используя функцию matplotlib.dates.date2num. Затем вы можете использовать массив numpy.float64, созданный как ось x с обработчиком события matplotlib. Возвращенные event.xdata из обработчика событий могут быть затем преобразованы обратно в дату-время с использованием функции matplotlib.dates.num2date.

0

Они, вероятно, на самом деле ... Я Интс что matplotlib рассчитывает даты, преобразовывая их в ints или плавает в первую очередь. Попробуйте функцию num2date в модуле matplotlib dates с данными вашего события, которые могут дать то, что вы хотите.

Смежные вопросы