在 Matplotlib 图的左侧和右侧使用不同的 y 轴

原文:https://www . geeksforgeeks . org/use-异 y 轴-在 matplotlib-plot 的左侧和右侧/

在本文中,我们将讨论如何创建 Matplotlib 图两侧的 y 轴。

有时为了快速进行数据分析,需要创建一个包含两个不同比例的数据变量的图表。为此目的使用双轴方法,即双 X 轴或双 Y 轴。 matplotlib 库中的matplotlib . Axes . Axes . twinx()功能用于创建共享 X 轴的双轴。

语法:

matplotlib.axes.Axes.twinx(self)

此方法不接受任何参数,如果提供了参数,将引发错误。它返回 ax_twin 对象,表示创建了一个新的 Axes 实例。以下示例说明了 matplotlib.axes 中的matplotlib . axes . Twinx()功能:

例 1:

Python 3

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

输出:

例 2:

Python 3

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

输出: