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: