在python中向绘图添加阴影框

我希望在下面的图中添加阴影框。我希望框从8月25日到8月30日运行并沿Y轴方向移动。

以下是我绘制的两个图的代码...

df = pd.read_excel('salinity_temp.xlsx')
dates = df['Date']
sal = df['Salinity']
temp = df['Temperature']

fig,axes = plt.subplots(2,1,figsize=(8,8),sharex=True)

axes[0].plot(dates,sal,lw=5,color="red")
axes[0].set_ylabel('Salinity (PSU)')
axes[0].set_title('Salinity',fontsize=14)

axes[1].set_title('Temperature',fontsize=14)
axes[1].plot(dates,temp,color="blue")
axes[1].set_ylabel('Temperature (C)')
axes[1].set_xlabel('Dates,2017',fontsize=12)
axes[1].xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%b %d'))
axes[0].xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%b %d'))

axes[1].xaxis_date()
axes[0].xaxis_date()

我希望阴影框突出显示当哈维飓风袭击得克萨斯州休斯顿时(8月25日至8月30日)。我的数据如下:

Date    Salinity    Temperature
20-Aug  15.88144647 31.64707184
21-Aug  18.83088846 31.43848419
22-Aug  19.51015264 31.47655487
23-Aug  23.41655369 31.198349
24-Aug  25.16410124 30.63014984
25-Aug  25.2273574  28.8677597
26-Aug  28.35557667 27.49458313
27-Aug  18.52829235 25.92834473
28-Aug  7.423231661 24.06635284
29-Aug  0.520394177 23.47881317
30-Aug  0.238508327 23.90857697
31-Aug  0.143210364 24.30892944
1-Sep   0.206473387 25.20442963
2-Sep   0.241343182 26.32663727
3-Sep   0.58000503  26.93431854
4-Sep   1.182055098 27.8212738
5-Sep   3.632014919 28.23947906
6-Sep   4.672006985 27.29686737
7-Sep   5.938766377 26.8693161
8-Sep   9.107671159 26.48963928
9-Sep   8.180587303 26.05213165
10-Sep  6.200532091 25.73104858
11-Sep  5.144526191 25.60035706
12-Sep  5.106032451 25.73139191
13-Sep  4.279492562 26.06132507
14-Sep  5.255868992 26.74919128
15-Sep  8.026764063 27.23724365

我已尝试在此链接(https://discuss.analyticsvidhya.com/t/how-to-add-a-patch-in-a-plot-in-python/5518)中使用矩形函数,但是似乎无法使其正常工作。

iceman4019 回答:在python中向绘图添加阴影框

独立于您的特定数据,听起来您需要axvspan。尝试在绘制代码后运行此代码:

for ax in axes:
    ax.axvspan('2017-08-25','2017-08-30',color='black',alpha=0.5)

如果将dates = df['Date']存储为类型datetime64,这将起作用。它可能不适用于其他日期时间数据类型,并且如果dates包含日期字符串,则它将不起作用。

本文链接:https://www.f2er.com/3122488.html

大家都在问