Skip to content
Related Articles

Related Articles

Improve Article

Use different y-axes on the left and right of a Matplotlib plot

  • Last Updated : 26 Dec, 2020

In this article, we are going to discuss how to create y-axes of both sides of a Matplotlib plot.

Sometimes for quick data analysis, it is required to create a single graph having two data variables with different scales. For this purpose twin axes methods are used i.e. dual X or Y-axes. The matplotlib.axes.Axes.twinx() function in axes module of matplotlib library is used to create a twin Axes sharing the X-axis.

Syntax :

matplotlib.axes.Axes.twinx(self)

This method does not take any parameters, raise an error if provided. It returns the ax_twin object which indicates that a new Axes instance is created. Below examples illustrate the matplotlib.axes.Axes.twinx() function in matplotlib.axes:

Example 1:



Python3




# import libraries 
import numpy as np 
import matplotlib.pyplot as plt 
  
# Creating dataset 
x = np.arange(1.0, 100.0, 0.191
dataset_1 = np.exp(x**0.25) - np.exp(x**0.5
dataset_2 = np.sin(0.4 * np.pi * x**0.5) + np.cos(0.8 * np.pi * x**0.25
  
# Creating plot with dataset_1
fig, ax1 = plt.subplots() 
  
color = 'tab:red'
ax1.set_xlabel('X-axis'
ax1.set_ylabel('Y1-axis', color = color) 
ax1.plot(x, dataset_1, color = color) 
ax1.tick_params(axis ='y', labelcolor = color) 
  
# Adding Twin Axes to plot using dataset_2
ax2 = ax1.twinx() 
  
color = 'tab:green'
ax2.set_ylabel('Y2-axis', color = color) 
ax2.plot(x, dataset_2, color = color) 
ax2.tick_params(axis ='y', labelcolor = color) 
  
# Adding title
plt.title('Use different y-axes on the left and right of a Matplotlib plot', fontweight ="bold"
  
# Show plot
plt.show()

Output:

Example 2:

Python3




# import libraries
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('mathtext', default='regular')
  
# Creating dataset
x = np.arange(10)
dataset_1 = np.random.random(10)*30
dataset_2 = np.random.random(10)*60
dataset_3 = np.random.random(10)*100
  
# Creating figure
fig = plt.figure()
  
# Plotting dataset_2
ax = fig.add_subplot(111)
ax.plot(x, dataset_2, '-', label='dataset_2')
ax.plot(x, dataset_3, '-', label='dataset_3')
  
# Creating Twin axes for dataset_1
ax2 = ax.twinx()
ax2.plot(x, dataset_1, '-r', label='dataset_1')
  
# Adding title
plt.title('Use different y-axes on the left and right of a Matplotlib plot',
          fontweight="bold")
  
# Adding legend
ax.legend(loc=0)
ax2.legend(loc=0)
  
# Sdding grid
ax.grid()
  
# Adding labels
ax.set_xlabel("X-axis")
ax.set_ylabel(r"Y1-axis")
ax2.set_ylabel(r"Y2-axis")
  
# Setting Y limits
ax2.set_ylim(0, 35)
ax.set_ylim(-20, 100)
  
# Show plot
plt.show()

Output:

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :