如何在 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 坐标的默认值。但是,当有多个坐标轴并且必须跨这些坐标轴对齐标签时,就会出现问题。

标签的坐标也可以指定到转换中。如果指定 None,则使用坐标轴坐标系,其中 (0, 0) 为左下角,(0.5, 0.5) 为中间等。

示例 1

import matplotlib.pyplot as p
import numpy as n

# generate some data
x=n.array([11, 22,33, 44, 55,66,77,88,99,100])

# create a subplot and plot the data
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))
# set the x-axis label and adjust the position
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('Linear graph')
a[1,0].xaxis.set_label_coords(0.35,-0.24)
a[1, 1].set_xlabel('exponential graph')
a[1,1].xaxis.set_label_coords(0.65,-0.25)

# display the plot
p.show()

输出

set_label_position() 函数

set_position() 函数用于设置子图中坐标轴标签的位置。此方法接受以下参数:-

Position − ‘left’、‘right’、‘top’、‘bottom’。

示例 2

import matplotlib.pyplot as p
import numpy as n

# generate some data
x=n.array([11, 22,33, 44, 55,66,77,88,99,100])

# create a subplot and plot the data
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))
# set the x-axis label and y label and adjust the position
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)


# display the plot
p.show()

输出

set_pad(),set_label 函数的 labelpad 参数

使用 set_pad() 函数,我们可以更改坐标轴标签和坐标轴刻度标签之间的间距。

例如,我们可以使用以下代码更改子图中 x 坐标轴标签周围的空间:-

示例 3

import matplotlib.pyplot as plt
import numpy as np

# generate some data
x=np.array([11, 22,33, 44, 55,66,77,88,99,100])

# create a subplot and plot the data
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))
# set the x-axis label and adjust the position

ax[1, 0].set_xlabel('Linear graph',labelpad=10)

ax[1, 1].set_xlabel('exponential graph',labelpad=10)


# display the plot
plt.show()

输出

结论

总之,调整坐标轴标签的位置是使用 Matplotlib 创建清晰准确的绘图的重要组成部分。Set_label_coords()、set_position() 和 set_pad() 是我们可以用来更改绘图或子图中坐标轴标签位置的一些方法。

更新于: 2023-05-31

7K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告