Как заполнить область возле оси Y на графике? - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно нанести на график две особенности кадра данных, где df ['DEPTH'] следует инвертировать, а по оси y и df ['SPECIES'] должны быть по оси x. Представляя, что на графике будет вариант линии, я бы хотел залить цветом область около оси y (левая сторона линии). Поэтому я написал некоторый код:

df = pd.DataFrame({'DEPTH': [100, 150, 200, 250, 300, 350, 400, 450, 500, 550],
               'SPECIES':[12, 8, 9, 6, 10, 7, 4, 3, 1, 2]})

plt.plot(df['SPECIES'], df['DEPTH'])
plt.fill_between(df['SPECIES'], df['DEPTH'])

plt.ylabel('DEPTH')
plt.xlabel('SPECIES')

plt.ylim(np.max(df['DEPTH']), np.min(df['DEPTH']))

Я попробовал 'plt.fill_between', но тогда левая часть графика не заполняется полностью.

enter image description here enter image description here

Кто-нибудь знает, как заполненная часть (синего цвета) может достичь оси Y?

1 Ответ

3 голосов
/ 12 марта 2020

Вместо fill_between вы можете использовать fill_betweenx. По умолчанию он начнет заполняться с 0, поэтому вам также нужно установить предел x равным 0.

plt.plot(df['SPECIES'], df['DEPTH'])
# changing fill_between to fill_betweenx -- the order also changes
plt.fill_betweenx(df['DEPTH'], df['SPECIES'])

plt.ylabel('DEPTH')
plt.xlabel('SPECIES')

plt.ylim(np.max(df['DEPTH']), np.min(df['DEPTH']))
# setting the lower limit to 0 for the filled area to reach y axis.
plt.xlim(0,np.max(df['SPECIES']))

plt.show()

Результат ниже.

enter image description here

...