日期时间轴间距

时间:2015-05-25 20:37:26

标签: python datetime matplotlib axis

我有一个错误栏图,其中xaxis是一个datetime对象列表。标准绘图方法将放置第一个和最后一个点,使它们在绘图的边界框上。我想偏移半个刻度,以便可以清楚地看到第一个和最后一个点。

ax.axis(xmin=-0.5,xmax=len(dates)-0.5)

由于显而易见的原因不起作用。如果不对任何日期进行硬编码,能够做到这一点会很高兴。

以下将生成一个有十点但你真的只能看到8点的情节。

import datetime
import matplotlib.pyplot as plt

dates = [datetime.date(2002, 3, 11) - datetime.timedelta(days=x) for x in range(0, 10)]
yvalues = [2, 4, 1,7,9,2, 4, 1,7,9]
errorvalues = [0.4, 0.1, 0.3,0.4, 0.1,.4, 0.1, 0.3,0.4, 0.1]

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1)
ax.errorbar(dates,yvalues,yerr=errorvalues,fmt='.') 
fig.autofmt_xdate()

plt.show()

3 个答案:

答案 0 :(得分:0)

对此的丑陋修复可能是以下

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1)
ax.errorbar(range(len(dates)),yvalues,yerr=errorvalues) 
ax.set_xticks(range(len(dates))
ax.set_xticklabels(dates, fontsize=8)
ax.axis(xmin=-0.5,xmax=len(dates)-0.5)
fig.autofmt_xdate()

这样做的缺点是轴对象不属于日期时间类型,因此您无法使用许多功能。

答案 1 :(得分:0)

您可以使用ax.margins来获得所需内容。

如果没有看到您的数据,很难知道您真正想要的保证金有多大。如果您使用python datetime-types绘图,则1的边距对应于相当大的余量:

fig, ax = plt.subplots()
ax.bar(x, y)
[t.set_ha('right') for t in ax.get_xticklabels()]
[t.set_rotation_mode('anchor') for t in ax.get_xticklabels()]
[t.set_rotation(45) for t in ax.get_xticklabels()]
ax.margins(x=1)

但是,如果没有看到现有的数据和情节,很难过于具体。

答案 2 :(得分:0)

您可以使用边距()

设置间距
import datetime
import matplotlib.pyplot as plt

dates = [datetime.date(2002, 3, 11) - datetime.timedelta(days=x) for x in range(0, 10)]
yvalues = [2, 4, 1,7,9,2, 4, 1,7,9]
errorvalues = [0.4, 0.1, 0.3,0.4, 0.1,.4, 0.1, 0.3,0.4, 0.1]

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1)
ax.errorbar(dates,yvalues,yerr=errorvalues,fmt='.') 
ax.margins(x=0.05)
fig.autofmt_xdate()

plt.show()