Мой кусок кода прост.Описание моей проблемы / что я пытаюсь сделать: у меня есть два списка - rmo
и rmw
.Я пытаюсь получить линейный график между ними.Это хорошо работает.Первый fill_between
также работает (... where rmo<rmw...facecolor='green')
.Однако fill_between(..where rmo>rmw..facecolor='pink')
не работает.Я проверил, и rmo
действительно имеет значения больше, чем rmw
.Ошибок нет, но весь график оказывается зеленым, а часть - розовой.Вот полный код:
import pandas as pd
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
#Reading the excel files
df17 = pd.read_excel(open(r'C:\Users\ADMIN\Desktop\Abhishek\Excel
Files\Team Stats Wolfsburg 17-18.xlsx','rb'))
df18 = pd.read_excel(open(r'C:\Users\ADMIN\Desktop\Abhishek\Excel
Files\Team Stats Wolfsburg 18-19.xlsx','rb'))
c=0
d=0
wolf1=[]
opponents1=[]
wolf2=[]
opponents2=[]
rmw=[]
rmo=[]
##Getting a list of the values I need
for i in df17["Team"]:
if i=="Wolfsburg":
wolf1.append(df17.iloc[c,7])
else:
opponents1.append(df17.iloc[c,7])
c=c+1
#Reversing the list to make sure its chronological
wolf1.reverse()
opponents1.reverse()
##Same method to get values from the other excel file
for j in df18["Team"]:
if j=="Wolfsburg":
wolf2.append(df18.iloc[d,7])
else:
opponents2.append(df18.iloc[d,7])
d=d+1
wolf2.reverse()
opponents2.reverse()
##Concatenating
totwol=wolf1+wolf2
totopp=opponents1+opponents2
##Removing nan values
totopp = [tot for tot in totopp if str(tot) != 'nan']
##X-axis
xaxis=np.linspace(1,76,76, endpoint=True)
##Calculating rolling averages
for k in range(0,76):
mean=
((totwol[k]+totwol[k+1]+totwol[k+2]+totwol[k+3]+totwol[k+4])/5)
rmw.append(mean)
for z in range(0,76):
mean2=
((totopp[z]+totopp[z+1]+totopp[z+2]+totopp[z+3]+totopp[z+4])/5)
rmo.append(mean2)
##Plotting
ax.plot(xaxis,rmw,label="xG Created")
ax.plot(xaxis,rmo, color="red",label="xG Conceded")
ax.plot([47,47],[0.5,2.6],label="2018-19 begins",color="g")
ax.plot([1,1],[0.5,2.6],label="2017-18 begins",color="yellow")
##Problem area
ax.fill_between(xaxis, rmw, rmo, where=rmw <= rmo, facecolor='g',
interpolate=True)
ax.fill_between(xaxis, rmw, rmo, where=rmw > rmo, facecolor='pink',
interpolate=True)
plt.show()
Вот примерные значения rmo,rmw
: rmo=[1.7,1.6,2.0,2.4],rmw=[1.4,1.6,1.6,1.1]

Чтоя делаю не так?