我有一个包含大约100万个条目的大型数据库。在一列中有这种形式的日期:'%Y-%m-%d%H:%M:%S。每秒有一个条目。在x轴上绘制大量的日期数据
我可以选择我想从数据库绘制时间,例如
日期1 =“2015年4月22日20时28分50秒”
日期2 =“2015年4月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
预先感谢您
编辑:
我已经加上几行的固定问题:
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y %H:%M:%S'))
plt.gcf().autofmt_xdate()
然而,现在我想把这个情节传递给一个web服务器[R使用mpld3插件:
mpld3.plugins.get_plugins(fig)
mpld3.fig_to_html(fig)
mpld3.show()
虽然,没有插件,情节似乎只是罚款,与x轴的日期,用插件看起来它不能解析此行
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y %H:%M:%S'))
进入html代码,结果x轴标签出现在unix时间。 任何人都知道插件有什么问题?
谢谢你,但千万你知道一种解决x轴标签问题的方法吗?即使我尝试放大,小时也只会出现(不是日期),并且它们会相互重叠。我想要的是,尽可能以最好的方式呈现日期,即使对于这些大数据集也是如此,而不会重叠,当然,只保留其中的一部分。 – tzoukritzou