首页  >  文章  >  后端开发  >  如何在 matplotlib 中格式化日期时间轴以仅显示年份和月份?

如何在 matplotlib 中格式化日期时间轴以仅显示年份和月份?

DDD
DDD原创
2024-10-27 18:46:30121浏览

How can I format a datetime axis in matplotlib to show only year and month?

调整日期时间轴的格式

在您希望可视化具有日期时间索引的系列的情况下,您可能会遇到以下情况:尽管您更喜欢“yyyy-mm”或“2016 年 3 月”等更简单的格式,但图表仍显示包括小时、分钟和秒在内的时间戳。

要解决此问题并实现所需的格式,我们可以利用以下功能由 matplotlib 提供。特别是,可以使用格式化程序自定义日期时间轴。这些格式化程序允许您指定 x 轴上的刻度标签应如何显示。

这是一个演示格式化程序使用的示例:

<code class="python">import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# Sample data with hourly timestamps
N = 30
drange = pd.date_range("2014-01", periods=N, freq="H")
np.random.seed(365)
values = {'values':np.random.randint(1,20,size=N)}
df = pd.DataFrame(values, index=drange)

# Create a plot with incorrect formatting
fig, ax = plt.subplots()
ax.plot(df.index, df.values)
ax.set_xticks(df.index)

# Use formatters to achieve the desired formatting
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%Y-%m"))
plt.xticks(rotation=90)

# Display the updated plot with the desired formatting
plt.show()</code>

在此示例中,我们首先创建一个带有每小时时间戳的示例 DataFrame。然后,我们使用 matplotlib.dates 中的 DateFormatter 指定 x 轴上的刻度标签应采用“%Y-%m”格式,仅表示年份和月份。最后,我们调用 xticks 来旋转刻度标签以获得更好的可读性。

通过实现这种方法,您可以有效地自定义日期时间轴的格式,确保它符合您所需的显示要求。

以上是如何在 matplotlib 中格式化日期时间轴以仅显示年份和月份?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn