user026
user026

Reputation: 702

How to fill the area near the y axis in a plot?

I need to plot two features of a dataframe where df['DEPTH'] should be inverted and at y-axis and df['SPECIES'] should be at x-axis. Imagining that the plot would be a variant line, I would like to fill with color the area near the y-axis (left side of the line). So I wrote some code:

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']))

I tried 'plt.fill_between', but then the left part of the plot doesn't get all filled.

enter image description here enter image description here

Anyone knows how can the filled part (blue color) reach the y-axis?

Upvotes: 1

Views: 629

Answers (1)

ilke444
ilke444

Reputation: 2741

Instead of fill_between, you can use fill_betweenx. It will start filling from 0 by default, thus you need to set your x limit to be 0 too.

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()

The result is below.

enter image description here

Upvotes: 3

Related Questions