gpt4 book ai didi

matplotlib - 无法在 Pandas 条形图中调整 x 轴日期格式

转载 作者:行者123 更新时间:2023-12-04 05:24:28 27 4
gpt4 key购买 nike

我想绘制一个 Pandas 时间序列对象 data使用 matplotlib。对于简单的折线图 data.plot() ,我能够使用 ax.xaxis.set_major_formatter(md.DateFormatter('%Y-%m-%d %H:%M:%S')) 成功更改 x 轴日期格式.

但是,我无法对条形图执行相同的操作 data.plot(kind='bar') .并且图表不会出现。有没有办法更改 Pandas 条形图的数据格式?我知道我可以使用 plt.bar 方法创建图表,但我需要使用 Pandas 堆积条形图来获取更复杂的数据。

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

n=20
duration=1000
now=time.mktime(time.localtime())
timestamps=np.linspace(now,now+duration,n)
dates=[dt.datetime.fromtimestamp(ts) for ts in timestamps]
values=np.sin((timestamps-now)/duration*2*np.pi)
data=pd.Series(values, index=dates)

fig=figure(figsize(5,5))
ax=fig.add_subplot(111)
data.plot(kind='bar')
ax.xaxis.set_major_formatter(md.DateFormatter('%Y-%m-%d %H:%M:%S'))

最佳答案

由于 Pandas 仅使用 matplotlib,您当然可以使用 matplotlib 创建相同的(堆叠)条形图。没有理由只能为此使用 Pandas。

不过在这种情况下它不会有帮助。 Matplotlib 的 bar()将 xvalues 从日期更改为浮点数,因此 DateFormatter不工作了。您可以使用 ax.get_xticks() 检查 xticks .

我不知道如何制作 xticks 日期,但您可以自己覆盖 xticklabels:

ax.set_xticklabels([dt.strftime('%Y-%m-%d %H:%M:%S') for dt in data.index.to_pydatetime()])

关于matplotlib - 无法在 Pandas 条形图中调整 x 轴日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19410617/

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