gpt4 book ai didi

python - matplotlib x 轴上日期之间的 vlines

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:15 26 4
gpt4 key购买 nike

我已经根据正确绘制的 pandas 数据框创建了一个 matplotlib 图。我正在图表上添加垂直线。我可以通过使用这个来做到这一点:

permitdate = 'June 15, 2017'

ax.axvline(permitdate, linewidth=2)

许可日期可以是我想要绘制的任意日期。

我遇到的问题是指数(即图表上的 x-asix)是基于月末的:

DatetimeIndex(['2017-04-30', '2017-05-31', '2017-06-30', '2017-07-31',
'2017-08-31', '2017-09-30', '2017-10-31', '2017-11-30',
'2017-12-31'],
dtype='datetime64[ns]', name='Date', freq=None)

当我尝试绘制 vlines 图表时,它会将线直接放在日期所在的月份上。

例如,上面的许可日期显示在 a 轴上六月 x 刻度的顶部。有没有办法在 6 月和 7 月 x 刻度之间显示它,代表月份之间的实际位置,而不是直接在月份 x 轴点上?

编辑:

受 pandas 文档启发的示例:

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np

ts = pd.Series(np.random.randn(10), index=pd.date_range('1/1/2000', periods=10, freq='m'))
ts = ts.cumsum()


df = pd.DataFrame(np.random.randn(10, 4), index=ts.index, columns=list('ABCD'))


df = df.cumsum()

ax = df.plot()
designdate = 'July 15, 2000'
ax.axvline(designdate, linewidth=2)

谢谢

伊万

最佳答案

使用resample结合interpolate获取每日频率

ax = df.resample('D').interpolate().plot()
designdate = 'July 15, 2000'
ax.axvline(pd.to_datetime(designdate), linewidth=2)

enter image description here

关于python - matplotlib x 轴上日期之间的 vlines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641757/

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