Python axvline与使用周期的条形图

Python axvline与使用周期的条形图,python,pandas,matplotlib,Python,Pandas,Matplotlib,我想为特定的月份日期(期间)画一条垂直线 预期的图形为: 我要绘制的数据帧(名为complete)如下所示: ENTRETIEN FRAIS_FINANCIER month 2017-10 57.48 311.34 2017-11 0.00 0.00 2017-12 0.00 0.00 2018-01 0.00 0.00 2018-02 57.48 311.34 2018-03 57.48 311.34 2018-04 0.00 3

我想为特定的月份日期(期间)画一条垂直线

预期的图形为:

我要绘制的数据帧(名为complete)如下所示:

      ENTRETIEN FRAIS_FINANCIER
month       
2017-10 57.48   311.34
2017-11 0.00    0.00
2017-12 0.00    0.00
2018-01 0.00    0.00
2018-02 57.48   311.34
2018-03 57.48   311.34
2018-04 0.00    368.82
2018-05 0.00    368.82
2018-06 0.00    368.82
2018-07 0.00    368.82
2018-08 0.00    368.82
2018-09 0.00    368.82
2018-10 0.00    0.00
2018-11 0.00    368.82
2018-12 0.00    368.82
2019-01 57.48   311.34
2019-02 57.48   311.34
2019-03 57.48   311.34
2019-04 57.48   311.34
2019-05 0.00    368.82
2019-06 0.00    368.82
2019-07 0.00    368.82
2019-08 0.00    368.82
2019-09 0.00    368.82
2019-10 0.00    0.00
2019-11 0.00    368.82
这是我的密码:

ax = complete.plot(kind='bar', stacked=True)
# Limite
plt.axvline(max(complete.index), color="red", linestyle="--", lw=2, label="Limite", ax=ax)
但对于代码,我有一个错误:

TypeError: '>' not supported between instances of 'float' and 'Period'

我想不出怎么做,你能帮我吗?

用以下方法绘制垂直线:

ax = complete.plot(kind='bar', stacked=True)
plt.axvline(
    x=complete.index.size - 1, ymin=0, ymax=complete.sum(axis=1).max(), 
    color="red", linestyle="--", lw=2, label="Limite"
)
由于条形图将x轴限制转换为每个条形增加1的数值,因此最后一个条形具有“index”
complete.index.size-1
。因此,这是垂直线的x位置。

试试这个:

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

date_rng = pd.date_range('2017-10-01','2019-11-01', freq='1M')
val = np.random.randint(0,50,(25,))
val2 = np.random.randint(0,350,(25,))
complete = pd.DataFrame({'month':pd.to_datetime(date_rng, format='%Y-%m'), 'ENTRETIEN':val,'FRAIS_FINANCIER':val2})
ax = complete.plot(x='month', kind='bar', stacked=True)
ax.axvline(max(complete.index), color="blue", linestyle="--", lw=2, label="Limite")

plt.axvline(x=complete.index.size,ymin=0,ymax=complete.sum(axis=1.max(),color=“red”,linestyle=“--”,lw=2,label=“Limite”,ax=ax)
您能提供示例数据(数据作为可执行代码段而不是图像)吗?@Scotty1-对不起,我编辑了我的消息如果我把您的行放进去,我会得到:“Line2D”对象没有属性“ax”。我试着移除所有的ax,我得到了图形,图例有限制,但这条线在图形上是不可见的…你想要实现的是水平画一条线,这不是你想要实现的吗?你可以用这个画
ax.axhline(max(complete.index),color=“red”,linestyle=“--”,lw=2,label=“Limite”)
如果不清楚,很抱歉,但我在示例图上显示了:我尝试做垂直线,但我切换到了垂直线。但它仍然会引发与问题中相同的错误。您忘记将月份设置为索引,因此您有一个数字索引。非常感谢!我所缺少的是这个条形图x轴变换不客气!是的,当用熊猫绘图时,这是自动完成的,因此很容易监督。