<p>要在matplotlib中打印基于日期的数据,必须将数据转换为正确的格式。</p>
<p>一种方法是首先将数据转换为<a href="https://docs.python.org/2.7/library/datetime.html#" rel="noreferrer">^{<cd1>}</a>对象,对于epoch时间戳,应该使用<a href="https://docs.python.org/2.7/library/datetime.html#datetime.datetime.fromtimestamp" rel="noreferrer">^{<cd2>}</a>。</p>
<p>然后必须将<code>datetime</code>对象转换为matplotlib的正确格式,这可以使用<a href="http://matplotlib.org/api/dates_api.html#matplotlib.dates.num2date" rel="noreferrer">^{<cd4>}</a>处理。</p>
<p>或者,您可以首先使用<a href="http://matplotlib.org/api/dates_api.html#matplotlib.dates.epoch2num" rel="noreferrer">^{<cd5>}</a>并跳过将日期转换为<code>datetime</code>对象(虽然这最初更适合您的用例,但我建议您在工作时尽可能多地将基于日期的日期保存在<code>datetime</code>对象中,从长远来看,这将节省您的麻烦)。</p>
<p>一旦数据格式正确,就可以使用<a href="http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot_date" rel="noreferrer">^{<cd8>}</a>绘制数据。</p>
<p>最后,按照您的意愿格式化x轴,您可以使用<a href="http://matplotlib.org/api/dates_api.html#matplotlib.dates.DateFormatter" rel="noreferrer">^{<cd9>}</a>对象来选择记号的外观。</p>
<pre><code>import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import numpy as np
# Generate some random data.
N = 40
now = 1398432160
raw = np.array([now + i*1000 for i in range(N)])
vals = np.sin(np.linspace(0,10,N))
# Convert to the correct format for matplotlib.
# mdate.epoch2num converts epoch timestamps to the right format for matplotlib
secs = mdate.epoch2num(raw)
fig, ax = plt.subplots()
# Plot the date using plot_date rather than plot
ax.plot_date(secs, vals)
# Choose your xtick format string
date_fmt = '%d-%m-%y %H:%M:%S'
# Use a DateFormatter to set the data to the correct format.
date_formatter = mdate.DateFormatter(date_fmt)
ax.xaxis.set_major_formatter(date_formatter)
# Sets the tick labels diagonal so they fit easier.
fig.autofmt_xdate()
plt.show()
</code></pre>
<p><img src="https://i.stack.imgur.com/idpth.png" alt="Plot"/></p>