У меня есть большая база данных, содержащая около 1 миллиона записей. В одной колонке указаны даты в этой форме: «% Y-% m-% d% H:% M:% S. Каждой секунде бывает одна запись.Участок огромного количества данных с датами по оси x
Я могу выбрать период, я хочу, чтобы построить из базы данных, например,
DATE1 = '2015-04-22 20:28:50'
date2 = «2015-04-23 21: 42:09 '
и другая колонка, которую я хочу построить по оси Y. Как вы можете видеть в конкретном примере, от date1 до date2 это около 86000 записей - или - указывает на график.
Есть ли способ эффективно использовать эти данные, используя matplotlib, с указанием дат на оси x? Конечно, не все даты могут быть показаны, но поскольку период построения графика является динамическим (я вставляю в веб-форму даты, которые я хочу), есть ли способ запрограммировать его так, чтобы график был максимально возможным каждый раз?
До сих пор я могу поместить все даты в список и все данные Y в другой список.
Ниже приведен мой код, который отображает данные, но метки X-оси не являются чем-то близким к тому, что я хочу.
from buzhug import Base
import datetime
import data_calculations as pd
import matplotlib.pyplot as plt
import matplotlib
import time
date1 = '2015-04-22 20:28:50'
date2 = '2015-04-24 19:42:09'
db = Base('monitor').open()
result_set = db.select(['MeanVoltage','time'],"time>=start and time<=stop", start=date1, stop=date2)
V = [float(record.MeanVoltage) for record in result_set]
Date = [str(record.time) for record in result_set]
dates = [datetime.datetime.strptime(record, '%Y-%m-%d %H:%M:%S') for record in Date]
dates = matplotlib.dates.date2num(dates)
fig, ax = plt.subplots()
ax.plot_date(dates, V)
plt.grid(True)
plt.show()
И результат Plot
Спасибо заранее
Edit:
Я исправили проблему, добавив следующие строки:
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y %H:%M:%S'))
plt.gcf().autofmt_xdate()
Однако, теперь я хочу передать сюжет в веб-службу г используя mpld3 плагин:
mpld3.plugins.get_plugins(fig)
mpld3.fig_to_html(fig)
mpld3.show()
While, без плагина, сюжет появляется просто отлично, с датами в оси х, с плагином, кажется, что это не может разобрать эту строку
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y %H:%M:%S'))
в html-код, и в результате ярлык оси x отображается в unix-время. Кто-нибудь знает, что не так с плагином?
Спасибо, но сделать вы знаете, как решить проблему с символами оси x?Даже если я попытаюсь увеличить масштаб, появляются часы (а не даты), и они перекрывают друг друга. Я бы хотел, чтобы дать даты наилучшим образом, даже для этих больших наборов данных, без наложения, конечно, сохраняя только некоторые из них. – tzoukritzou