Как заставить Винсента правильно отображать ось даты/времени панд?

У меня есть кадр данных pandas, который я хочу использовать в визуализации Винсента. Я могу визуализировать данные, однако ось X должна отображаться как даты, а вместо дат просто указывается целочисленный индекс 500, 1000, 1500 и т. д.

Фрейм данных выглядит так:

    weight      date
0   125.200000  2013-11-18

Усечено для краткости.

Мой код Винсента в моей записной книжке ipython:

chart = vincent.Line(df[['weight']])
chart.legend(title='weight')
chart.axis_titles(x='Date', y='Weight')
chart.display()

Как я могу сказать Винсенту, что мой фрейм данных содержит такие даты, что метки оси X точно такие же, как даты фрейма данных выше, то есть 2013-11-18?


person David Watson    schedule 26.03.2015    source источник
comment
попробуйте сначала преобразовать свои даты в объекты даты и времени pandas. pandas.pydata.org/pandas-docs/dev/generated/   -  person szeitlin    schedule 27.03.2015


Ответы (1)


хорошо, так вот что я сделал. Я сталкивался с этой проблемой раньше с matplotlib, и это было настолько болезненно, что я написал об этом сообщение в блоге (http://codrspace.com/szeitlin/biking-data-from-xml-to-plots-part-2/). Винсент не совсем то же самое, но по сути вам нужно сделать 4 шага:

  1. конвертируйте свои даты в объекты datetime, если вы еще этого не сделали

df['date_objs'] = df['date'].apply(pandas.to_datetime)

  1. конвертируйте ваши объекты даты и времени в любой формат, который вы хотите.
  2. сделайте свои объекты datetime в свой индекс

    df.index = df.index.values.astype('M8[D]')

  3. скажите Винсенту, что вы хотите отобразить свои данные (вес) по оси Y. Он будет автоматически использовать индекс вашего фрейма данных в качестве оси X.

    chart = vincent.Line(plot[['weight']]) 
    chart.axis_titles(x='dates', y='weight') 
    chart.display()
    
person szeitlin    schedule 26.03.2015