我想在我的条形图上创建3条阈值线,但是,每一条线只会转到下一个阈值点的日期,然后将开始一条新线。这是一个包含3列的表,“现金”、“结束日期”和“期限”
我有下面的代码,但我不能让它在这些级别上循环,而是线是图的全宽:
import pandas as pd
import matplotlib.pyplot as plt
df = {'Cash':[900e6,800e6,700e6,600e6,500e6,400e6,300e6,200e6,100e6,0],
'End Date': ['27/03/2023','28/03/2023','29/03/2023','30/03/2023','31/03/2023','01/04/2023','02/04/2023','20/09/2023','21/09/2023','21/01/2024'],
'Tenor': ['1-3 Month','1-3 Month','1-3 Month','1-3 Month','1-3 Month','1-3 Month','1-3 Month','6 Month','6 Month','9Month']}
df = pd.DataFrame(data = df)
pd.to_datetime(df['End Date'])
fig, ax = plt.subplots(figsize=(10, 100))
for tenor, group in df.groupby('Tenor'):
cash_out_limits = [200e6, 300e6, 500e6] # define cash out limits for each tenor
last_end_date = group.iloc[-1]['End Date'] # get the last end date for each tenor
start_end_date = group.iloc[0]['End Date']
print(start_end_date)
# create a red hline for each cash out limit
for limit in cash_out_limits:
ax.axhline(limit, color='r', linestyle='--')
# plot cash out vs end date as a bar chart
df.plot(x='End Date', y='Cash', kind='bar', ax=ax)
plt.show()
下一步是在每个tenor结束处创建垂直线直到下一个阈值点。我已经设法用last_end_date和start_end_date获得了阈值点。
有人能帮忙吗。
我试过编辑这一行,但不起作用:
for limit in cash_out_limits:
ax.axhline(y=limit, xmin = start_end_date, xmax = last_end_date, color='r', linestyle='--')
1条答案
按热度按时间6g8kf2rb1#
使用额外参数控制水平线的宽度
axhline
具有指定xmin和xmax的可选第二和第三参数。如果你想让水平线有个界限,这样如何?
显然,您需要根据x范围的需要,用适当的值或公式替换10和20。