gpt4 book ai didi

python matplotlib - 如何确保 x 轴值与源数据相同

转载 作者:行者123 更新时间:2023-12-04 15:17:37 24 4
gpt4 key购买 nike

我正在尝试在 matplotlib 上做一些绘图。这是我的数据df:

     datadate       loss_CF
0 2020-03-31 14744.417859
1 2020-06-30 18443.540626
2 2020-09-30 21902.934212
3 2020-12-31 24743.491101
4 2021-03-31 22532.267947
5 2021-06-30 21835.597756
6 2021-09-30 21607.682299
7 2021-12-31 22898.842686
8 2022-03-31 21513.368257
9 2022-06-30 20412.728656
10 2022-09-30 19598.518147
11 2022-12-31 18220.543880

这是我绘制它的代码:

import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter

#date = df['datadate'].dt.strftime('%y-%b')
fig, ax = plt.subplots()
y_formatter = ticker.StrMethodFormatter('${x:,.0f}')
x_formatter = DateFormatter('%b-%y')
ax.yaxis.set_major_formatter(y_formatter)
ax.xaxis.set_major_formatter(x_formatter)
plt.plot(df['datadate'], df['loss_CF'])
plt.show()

这是我得到的数字:

enter image description here

有没有办法将 x 轴值更改为 df 中的 datadate?换句话说,我希望它们都是季末月,而不是一月、五月等。例如,对应于第一个数据点的第一个刻度应该是 Mar-20。我怎样才能做到这一点?我认为 ax.set_xticksax.set_xticklabels 可能是答案,但在尝试了很长时间后,我仍然无法获得我想要的理想情节。

最佳答案

由于你的数据不是太长,你可以只对字符串进行绘图:

fig, ax = plt.subplots(figsize=(10,6))

plt.plot(df['datadate'].dt.strftime('%b-%y'), df['loss_CF'])
plt.show()

输出:

enter image description here

另外,你可以试试 pandas 的 plot 函数:

fig, ax = plt.subplots(figsize=(10,6))
x_formatter = DateFormatter('%b-%y')
(df.assign(date=df.datadate.dt.to_period('Q'))
.plot(x='date',y='loss_CF',ax=ax)
)

输出:

enter image description here

关于python matplotlib - 如何确保 x 轴值与源数据相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64020663/

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