gpt4 book ai didi

python - Matplotlib x 轴日期刻度频率

转载 作者:行者123 更新时间:2023-12-02 02:49:13 25 4
gpt4 key购买 nike

我有一个看起来像这样的简单数据框(年份是日期时间索引列):

Year         A          B
2018-01-01 1.049400 1.034076
2017-01-01 1.056371 1.032066
2016-01-01 1.063413 1.030055

我使用以下方法绘制数据:

df['A'].plot()

df['B'].plot()

每 5 年获取一次带有日期刻度标签的图表。

enter image description here

如何让年刻度每 2 年(或任何其他年数)出现一次?

最佳答案

检查这段代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as md

x = range(2000, 2018, 1)
year = [f'{str(y)}-01-01' for y in x]

df = pd.DataFrame({'Year': year,
'A': np.sin(x),
'B': np.cos(x)})

df['Year'] = pd.to_datetime(df['Year'], format = '%Y-%m-%d').dt.date
df.set_index('Year', inplace = True)

fig, ax = plt.subplots(1, 1, figsize = (6, 4))

df['A'].plot()
df['B'].plot()

step = 2
ax.xaxis.set_major_locator(md.YearLocator(step, month = 1, day = 1))
ax.xaxis.set_major_formatter(md.DateFormatter('%Y'))

plt.legend()
plt.show()

您可以使用 md.YearLocator() 管理刻度数,特别是使用 step 值。我报告 documentation对于这个方法。
注意 df 索引的类型:为了使代码正常工作,dataframe 索引列必须是 datetime.date,所以我使用了 .dt.date 方法将 pandas._libs.tslibs.timestamps.Timestamp(因为我以这种方式构建数据框)转换为 datetime.date。这取决于您拥有的数据类型。
一些例子:

步数 = 2

enter image description here

步骤 = 4

enter image description here

步数 = 10

enter image description here

关于python - Matplotlib x 轴日期刻度频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62328174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com