如何在 Matplotlib 中调整轴标签的位置?
当我们使用子图或图在 Matplotlib 中执行数据可视化时,重要的是正确标记轴并根据需要调整轴标签的位置,以使它们不与图中的其他元素重叠。这可以帮助用户轻松理解正在呈现的数据。
为了创建标签和调整标签,我们将使用用于创建高质量数据可视化的 Matplotlib 库。本文将讨论在 Matplotlib 中调整轴标签位置的各种方法。我们将使用子图来实现这一点。
Matplotlib
Matplotlib 是一个主要用于为 Python 编程语言和 NumPy(其数值数学扩展)绘制图形和图的库。 Tkinter、wxPython、Qt 和 GTK GUI 工具包可能包含利用其面向对象 API 的图表。
matplotlib.pyplot 是一组命令式方法,允许 matplotlib 以类似于 MATLAB 的方式运行。每个 pyplot 函数都会以某种方式改变图形,无论是通过添加绘图区域、绘制线条、添加标签等。当前图形和绘图区域在 matplotlib.pyplot 中的函数调用之间保存,绘图函数始终应用于活动轴集。
子图
Matplotlib 中的子图允许在单个图形中显示多个图或图表。我们可以借助子图同时比较和分析多组数据。这使得发现或识别趋势、模式和关系变得更容易。
子图是较小图的网格,是较大图的一部分。每个子图在网格中都有自己的位置,这取决于网格中的行数和列数以及子图在该网格中的位置。
Matplotlib 的"subplots"方法让我们可以创建子图。此函数返回一个图形对象和一个子图对象数组。我们可以使用这些子图对象在每个子图中绘制数据。
语法
fig,ax=plt.subplots(nrows,ncolumns,index)
解释
nrows − 此参数指定网格中子图的行数。
ncolumns − 此参数指定网格中子图的列数。
index − 此参数指定当前子图的索引。索引从 1 开始,逐行增加。
调整轴标签的位置
Matplotlib 中有各种方法或函数可用于调整 Matplotlib 图形中轴标签的位置,它们是 −
.set_label_coords() 函数
set_label_position() 函数
set_pad() 函数
.set_label_coords()
此方法用于设置子图标签的坐标。
刻度标签边界框确定 y 标签的 x 坐标和 x 标签的 y 坐标的默认值。然而,当轴很多,标签必须对齐时,就会出现问题。
标签的坐标也可以指定给变换。如果未指定,则使用轴坐标系,其中 (0, 0) 为左下角,(0.5, 0.5) 为中间,等等。
示例 1
import matplotlib.pyplot as p import numpy as n # 生成一些数据 x=n.array([11, 22,33, 44, 55,66,77,88,99,100]) # 创建子图并绘制数据 f, a = p.subplots(2,2) a[0,0].plot(x, n.sin(x)) a[0,1].plot(x,n.cos(x)) a[1, 0].plot(x, x) a[1, 1].plot(x, n.exp(x)) # 设置 x 轴标签并调整位置 a[0,0].set_xlabel('Sin graph') a[0,0].xaxis.set_label_coords(0.35, 0) a[0,1].set_xlabel('Cos graph') a[0,1].xaxis.set_label_coords(0.65,0) a[1, 0].set_xlabel('线性图') a[1,0].xaxis.set_label_coords(0.35,-0.24) a[1, 1].set_xlabel('指数图') a[1,1].xaxis.set_label_coords(0.65,-0.25) # 显示图 p.show()
输出
set_label_position() 函数
set_position() 函数用于设置子图中轴的标签位置。此方法接受以下参数 -
位置 - '左'、'右'、'上'、'下'。
示例 2
import matplotlib.pyplot as p import numpy as n # 生成一些数据 x=n.array([11, 22,33, 44, 55,66,77,88,99,100]) # 创建子图并绘制数据 f, a = p.subplots(2,2) a[0,0].plot(x, n.sin(x)) a[0,1].plot(x,n.cos(x)) a[1, 0].plot(x, x) a[1, 1].plot(x, n.exp(x)) # 设置 x 轴标签和 y 标签并调整位置 a[0,0].set_xlabel('Sin graph') a[0,0].xaxis.set_label_position('bottom') a[0,0].yaxis.set_label_position('left') a[0,0].xaxis.set_label_coords(0.35, 0) a[0,0].yaxis.set_label_coords(0.35, 0) a[0,1].set_xlabel('Cos graph') a[0,1].xaxis.set_label_position('bottom') a[0,0].yaxis.set_label_position('left') a[0,1].xaxis.set_label_coords(0.65,0) a[0,1].yaxis.set_label_coords(0.65,0) a[1, 0].set_xlabel('Linear graph') a[1,0].xaxis.set_label_position('bottom') a[0,0].yaxis.set_label_position('left') a[1,0].xaxis.set_label_coords(0.35,-0.24) a[1,0].yaxis.set_label_coords(0.35,-0.24) a[1, 1].set_xlabel('exponential graph') a[1,1].xaxis.set_label_position('bottom') a[0,0].yaxis.set_label_position('left') a[1,1].xaxis.set_label_coords(0.65,-0.25) a[1,1].yaxis.set_label_coords(0.65,-0.25) # 显示图 p.show()
输出
set_label 函数的 labelpad 参数 set_pad()
使用 set pad() 函数,我们可以更改轴标签和轴刻度标签之间的距离。
例如,我们可以使用以下代码来更改子图中 x 轴标签周围的空间大小 −
示例 3
import matplotlib.pyplot as plt import numpy as np # 生成一些数据 x=np.array([11, 22,33, 44, 55,66,77,88,99,100]) # 创建子图并绘制数据 fig, ax = plt.subplots(2,2) ax[0,0].plot(x, np.sin(x)) ax[0,1].plot(x,np.cos(x)) ax[1, 0].plot(x, x) ax[1, 1].plot(x, np.exp(x)) # 设置 x 轴标签并调整位置 ax[1, 0].set_xlabel('线性图',labelpad=10) ax[1, 1].set_xlabel('指数图',labelpad=10) # 显示图 plt.show()
输出
结论
总之,调整轴标签的位置是使用 Matplotlib 制作清晰准确的图的重要部分。set_label_coords()、set_position() 和 set_pad() 是我们可以用来更改图或子图中轴标签位置的一些方法。