4

看看这个例子:

import datetime as dt
from matplotlib import pyplot as plt 
import matplotlib.dates as mdates
x = []
d = dt.datetime(2013, 7, 4)
for i in range(30):
        d = d+dt.timedelta(days=1)
        x.append(d)

y = range(len(x))
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.gcf().autofmt_xdate()
plt.bar(x,y)
plt.show()

代码在图中的 x 轴上写出日期,见下图。问题是日期被堵塞了,如图所示。如何使 matplotlib 只写出每五个或每十个坐标?

在此处输入图像描述

4

1 回答 1

18

您可以在下面指定interval参数DateLocator。例如interval=5,定位器在每 5 个日期放置一次刻度。此外,autofmt_xdate()在方法之后放置bar以获得所需的输出。

import datetime as dt
from matplotlib import pyplot as plt 
import matplotlib.dates as mdates
x = []
d = dt.datetime(2013, 7, 4)
for i in range(30):
        d = d+dt.timedelta(days=1)
        x.append(d)

y = range(len(x))
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=5))
plt.bar(x, y, align='center') # center the bars on their x-values
plt.title('DateLocator with interval=5')
plt.gcf().autofmt_xdate()
plt.show()

每 5 个日期带有刻度的条形图。

interval=3您一起,每第三次约会都会打勾:

每 3 个日期带有刻度的条形图。

于 2013-07-03T15:43:45.897 回答