Skip to content
Related Articles

Related Articles

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

View Discussion
Improve Article
Save Article
  • Last Updated : 23 Jan, 2022
View Discussion
Improve Article
Save Article

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)
 
# adding 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:


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!