首页 > 解决方案 > 使用 matplotlib 限制 x 刻度的频率

问题描述

我无法限制 x 轴上的日期数量以使其清晰易读。我需要绘制字长与年份的关系,但年数对于绘图大小来说太大了。

问题:

在此处输入图像描述

任何帮助表示赞赏。

标签: pythonmatplotlib

解决方案


如评论中所述,使用 datetime (如果您的日期是字符串格式,您可以轻松地将它们转换为 datetime)。一旦你这样做了,它应该会自动沿 x 轴显示年份。如果您需要将滴答频率更改为每年(或其他任何时间),您可以使用 mdates,如下所示:

import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import datetime
import math

start = datetime.datetime.strptime("01-01-2000", "%d-%m-%Y")
end = datetime.datetime.strptime("10-04-2019", "%d-%m-%Y")

x = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)]
y = [math.sqrt(x) for x in range(len(x))]

fig, ax = plt.subplots()
ax.plot(x, y)
ax.xaxis.set_major_locator(mdates.YearLocator())
fig.autofmt_xdate()
plt.show()

上面的代码片段生成以下内容: 在此处输入图像描述


推荐阅读