Matlab如何通过背景色来说明百分比增长?[时间序列图表的]

2024-06-11 23:01:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想绘制一个timeseries图表:

样本数据:

datetime = pd.date_range(start = '01/03/2019', periods = 60)  #60 days = 2 months
data = [2000]
for i in range (29):
    data.append(data[-1]*1.05)                #first 30 days - growth 5%
for i in range(30):
    data.append(data[-1]*1.15)                #last 30 days - growth 15%

plt.plot(datetime, data)
plt.show()

我们得到下图:enter image description here

所以我想在两个区域(2个矩形)中剪切背景色

  • 第一个是增长率为5%的地区
  • 第二个地区的增长率为15%

我尝试过这样做,但困难在于datematlab转换为delta时间,所以我无法在我想要剪切的那天通过输入来剪切它

plt.xlim()
(737059.05, 737123.95)      #delta time

plt.ylim()
(-25153.66313846143, 572226.92590769)

请帮助我在一个简单的方式,以便在未来我可以削减在任何领域,如5天,10天,15天根据数据


Tags: 数据infordatadatetimedate绘制range
1条回答
网友
1楼 · 发布于 2024-06-11 23:01:31

您可以使用DateTime对象,只要您不尝试混合和匹配matplotlib(执行plt.xlim()时看到的内部表示)和DateTime

d = pd.date_range(start = '01/03/2019', periods = 60)  #60 days = 2 months
data = [2000]
for i in range (29):
    data.append(data[-1]*1.05)                #first 30 days - growth 5%
for i in range(30):
    data.append(data[-1]*1.15)                #last 30 days - growth 15%

cutoff = 30
cutoff_date = d[0]+cutoff*d.freq
plt.figure()
plt.plot(d, data)
plt.axvline(cutoff_date,ls=' ',color='k')
plt.axvspan(xmin=d[0],xmax=cutoff_date, facecolor='r', alpha=.5)
plt.axvspan(xmin=cutoff_date,xmax=d[-1], facecolor='g', alpha=.5)
plt.gcf().autofmt_xdate()
plt.show()

enter image description here

相关问题 更多 >