Мне трудно установить пределы оси X c, когда я строю две кривые на одном графике.
Мои данные имеют две кривые (ПРОНИЦАЕМОСТЬ и ПОРИСТОСТЬ), а ГЛУБИНА будет работать как индекс . Так что мне удалось изобразить их на одном графике и с некоторой помощью заполнить области между ними. Вот мой код:
df = pd.DataFrame({'DEPTH': [100, 150, 200, 250, 300, 350, 400, 450, 500, 550],
'PERMEABILITY': [1000, 800, 900, 600, 200, 250, 400, 300, 100, 200],
'POROSITY': [0.30, 0.25, 0.15, 0.19, 0.15, 0.10, 0.15, 0.19, 0.10, 0.15]})
f, ax1 = plt.subplots()
ax1.set_xlabel('PERMEABILITY')
ax1.set_ylabel('DEPTH')
ax1.set_ylim(df['DEPTH'].max(), df['DEPTH'].min())
ax1.plot(df['PERMEABILITY'], df['DEPTH'], color='red')
ax1.tick_params(axis='x', labelcolor='red')
ax2 = ax1.twiny()
ax2.set_xlabel('POROSITY')
ax2.plot(df['POROSITY'], df['DEPTH'], color='blue')
ax2.tick_params(axis='x', labelcolor='blue')
# convert POROSITY axis to PERMEABILITY
# value-min / range -> normalized POROSITY (normp)
# normp*newrange + newmin -> stretched POROSITY to PERMEABILITY
z=df['POROSITY']
x=df['PERMEABILITY']
nz=((z-np.min(z))/(np.max(z)-np.min(z)))*(np.max(x)-np.min(x))+np.min(x)
# fill between in green where PERMEABILITY is larger
ax1.fill_betweenx(df['DEPTH'],x,nz,where=x>=nz,interpolate=True,color='g')
# fill between in yellow where POROSITY is larger
ax1.fill_betweenx(df['DEPTH'],x,nz,where=x<=nz,interpolate=True,color='y')
plt.show()
Но когда я пытаюсь установить определенные c пределы для оси X, эта заполненная область не следует новый «размер кривой», как вы видите на левом изображении ниже. Мой результат должен быть похож на изображение справа (я сделал это в Paint). Например, если я добавлю:
ax1.set_xlim(0, 1500)
ax2.set_xlim(-0.10, 0.45)
Кто-нибудь может мне с этим помочь? Заранее спасибо!