2016-02-28 4 views
-1

Как я могу использовать дату из базы данных Sqlite по оси x, чтобы создать гистограмму с matplotlib?Дата в графике matplotlib

Если преобразовать дату в Отметка времени Unix графике работы, но я хотел бы получить что-то вроде этого: http://i.stack.imgur.com/ouKBy.png

lowestNumber = self.c.execute('SELECT number,date, time FROM testDB ORDER BY number ASC LIMIT 1') 
     for rows in lowestNumber: 
      datesLow = rows[1]#returns 2016-02-23 
      splitDate = datesLow.split('-') 
      spaces = "" 
      # tabs = '/' 
      # tabsDatesLow = tabs.join(splitDate) 
      joinDatesLow = spaces.join(splitDate) 

      x = int(joinDatesLow) 

      plt.bar(x,low, label="Minimum number of players", color="red") 
      plt.show() 

ответ

0

Вы должны иметь формат целое время для построения дат в Matplotlib, а затем для форматирования осей передается объект форматирования даты. Функция date2num Matplotlib может сделать это за вас. Другим хорошим примером является документация Matplotlib с примером здесь: http://matplotlib.org/examples/pylab_examples/date_demo1.html. Вот решение yo может оказаться полезным:

import datetime 
import matplotlib.pyplot as plt 
from matplotlib.dates import AutoDateLocator, AutoDateFormatter, date2num 

#make my own data: 
date = '2016-02-23' 
low = 10 

#how to format dates: 
date_datetime = datetime.datetime.strptime(date, '%Y-%m-%d') 
int_date = date2num(date_datetime) 

#create plots: 
fig, ax = plt.subplots() 

#plot data: 
ax.bar(int_date,low, label="Minimum number of players", color="red") 

#format date strings on xaxis: 
locator = AutoDateLocator() 
ax.xaxis.set_major_locator(locator) 
ax.xaxis.set_major_formatter(AutoDateFormatter(locator)) 

#adjust x limits and apply autoformatter fordisplay of dates 
min_date = date2num(datetime.datetime.strptime('2016-02-16', '%Y-%m-%d')) 
max_date = date2num(datetime.datetime.strptime('2016-02-28', '%Y-%m-%d')) 
ax.set_xlim([min_date, max_date]) 
fig.autofmt_xdate() 

#show plot: 
plt.show() 
Смежные вопросы