我有一個包含大約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