【发布时间】:2019-04-28 15:23:50
【问题描述】:
我经常在一个图上绘制来自不同来源的多个时间序列数据,其中一些需要使用 matplotlib。格式化 x 轴时,我使用 matplotlib 的 autofmt_xdate(),但我更喜欢 pandas 的自动格式化。我知道我可以使用set_major_formatter() 手动设置格式,但我创建的图从几年到总范围内的天数不等,因此我需要根据每个图调整格式。有没有办法将 matplotlib 设置为使用类似于 pandas 的日期自动格式化 x 轴?
我也使用交互式绘图,当使用 pandas df.plot() 时,x 轴会在缩放到如下所示的各个范围时更新,我也想使用 matplotlib 来实现:
版本:
Python: 3.7.1
Pandas: 0.23.3
Matplotlib: 2.2.2
所需格式:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
ix = pd.date_range('1/1/2017', '11/1/2018', freq='D')
vals = np.random.randn(len(ix))
df = pd.DataFrame({'Values': vals}, index=ix)
fig, ax = plt.subplots(1, 1, figsize=[8,6])
df.plot(ax=ax, lw=1)
plt.show()
当前格式:
fig, ax = plt.subplots(1, 1, figsize=[8,6])
ax.plot(df, lw=1)
fig.autofmt_xdate()
plt.show()
【问题讨论】:
-
无法重现,您的第一个代码 sn-p 给了我您的“所需”格式。
-
是的,这是一个简单的例子,只是为了展示我想要使用 matplotlib 实现的格式,而不需要
df.plot() -
MPL 确实需要一个 copy_formatter() 函数。当索引相等时应该很容易实现。你解决了吗?
标签: python pandas datetime matplotlib plot