如何在 Matplotlib 中为所有子图设置一个主标题?

matplotlibpythonserver side programmingprogramming

多个子图由一组不同的绘图图定义。Matplotlib 是 Python 中提供动画和交互式可视化的模块的名称。在 Python 中,我们有一些名为 suptitle() 的内置函数,可用于为 Matplotlib 中的所有子图设置单个主标题。

语法

示例中使用了以下语法 -

array()

Python 的数组方法通过返回具有其特定值的元素数量来定义。

suptitle()

这是 Python 中的内置方法,可用于设置所有子图的主标题。

add_subplot()

此方法遵循包装器模块,即 matplotlib.pyplot,并在处理图像窗口时提供附加行为api。

imshow()

这是 Python 中的一个内置函数,可用于在窗口中显示图像。

set_ylabel()
set_xlabel()

这两个内置函数遵循 matplotlib 模块,用于设置垂直和水平两侧的标签或文本。

show()

这是 Python 中的内置方法,在程序结束时使用,以图形形式获取结果。

figure()

该图是 Python 中的一个内置方法,创建一个新图形。

示例 1

在下面的示例中,我们将通过导入名为 numpy 和 matplotlib.pyplot 的模块来启动程序。然后使用内置方法 array() 设置数组列表并将其存储在变量 x 中。然后初始化图 ax(表示为名为 fig 的类的对象)并通过创建遵循名为 matplotlib.pyplot 的包装器模块的子图来存储值。接下来,使用内置方法 subplot() 设置 4 个不同的子图。然后使用内置方法 suptitle() 设置主标题,它代表所有绘图图的主标题。接下来,使用 show() 方法获取所需结果。

import numpy as np
import matplotlib.pyplot as plt
# 创建数据
x=np.array([1, 2, 3, 4, 5])

# 制作子图
fig, ax = plt.subplots(2, 2)

# 使用子图和绘图设置数据
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*9)
ax[1, 0].plot(x, x*x*x)
ax[1, 1].plot(x, x*4)
plt.suptitle('Various ways to plotting the graph')
plt.show()

输出

示例 2

在下面的示例中,我们将显示所有不同绘图图形的主标题。然后开始导入名为 matplotlib.pyplot 的包装器模块。然后使用名为 figure() 的方法创建新图形。接下来,使用 arange() [定义数组中包含的间隔值] 和 reshape() 函数与 numpy 模块(即 np)。然后开始迭代 for 循环以使用内置方法 add_subplit() 和 imshow() 根据图像处理设置 6 个图形。继续使用内置方法 suptitle() 设置所有绘图图的主标题,并借助 show() 方法获取结果。

import matplotlib.pyplot as pl
import numpy as np
fig=pl.figure()
ax_range=np.arange(100).reshape((10,10))
for i in range(1,7):
    ax=fig.add_subplot(3,3,i)        
    ax.imshow(ax_range)
# 设置所有子图的主标题
fig.suptitle('各种图形的图像处理')
pl.show()

输出

示例 3

在下面的示例中,我们将开始实现必要的库 pandas、numpy 和 matplotlib.pyplot,并分别将对象引用作为 pd、np 和 plt。然后创建遵循 pandas 模块的 DataFrame,并接受参数 - np.random.rand()[为特定形状创建数组并填充其值] 和 columns[以列表形式设置总列数]。接下来,在变量 x 和 y 中设置 x 轴和 y 轴的数据。然后使用 subplot() 将子图分成两行和两列,宽度和高度相同,即 figsize(8,8)。现在使用内置方法 plot() 绘制轴,并使用内置方法 grid() 在图形上设置网格线。为了在图形上显示一些独特性,它将使用 x 轴和 y 轴上的标签作为图形的第一行和第一列。继续设置主要任务,即设置所有绘制条形图的主标题。最后,我们在 show() 的帮助下打印结果。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建数据
df=pd.DataFrame(np.random.rand(5, 5), columns=['a', 'b', 'c', 'd','e'])

# 创建数据
x=[1,2,3,4,5]
y=[5,10,15,20,25]

fig, axis = plt.subplots(figsize=(8,8),nrows=2, ncols=2)
ax1=plt.subplot(2,2,1)
plt.plot(x,y)

# 绘制轴
df["b"].plot(ax=axes[1,0], kind='bar', grid=True)
df["c"].plot(ax=axes[1,1], kind='bar', grid=True)
df["d"].plot(ax=axes[0,1], kind='bar', grid=True)

# 设置所有绘图图上的网格线
ax1.grid(True)

# 设置水平和垂直文本
ax1.set_ylabel('Test')
ax1.set_xlabel('Test2')
fig.suptitle('BAR GRAPH')
plt.show()

输出

示例 4

在下面的示例中,我们通过使用 Seaborn 模块创建散点图来启动程序,以可视化两个不同部分(A 和 B)的学生人数与分数之间的关系。然后我们使用 replot() 通过设置一些参数来创建散点图 - data、x、y 和 col。接下来,使用内置方法 rel.fig.suptitle() 设置主标题并获取最终结果。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

#创建虚假数据
df = pd.DataFrame({'students': [15, 12, 15, 24, 19, 23, 25, 29],
    'score': [4, 8, 9, 10, 7, 5, 8, 3],
    'section': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B']})

#创建 relplot
rel = sns.relplot(data=df, x='students', y='score', col='section')

#添加主标题
rel.fig.suptitle('学生表现状态')

输出

结论

我们讨论了在单个框架内绘制不同图形的不同方法。suptitle() 是 Pythod 的重要方法,它为 Matplotlib 中的所有子图设置单个主标题。我们在图表上看到了新概念,即图像处理,而其他示例显示了条形图、散点图和线图等图形。


相关文章