📜  如何在Python的boxplot 上显示文本?(1)

📅  最后修改于: 2023-12-03 14:52:52.084000             🧑  作者: Mango

如何在Python的boxplot上显示文本?

在数据可视化中,常常需要在图表上添加文本信息以方便观察者理解图表所呈现的数据。在Python中,使用matplotlib库绘制箱线图(boxplot)时,我们也可以在图表上添加文本信息。下面将为大家介绍如何在Python的boxplot上显示文本。

步骤一:导入相关库

在使用boxplot绘制图表和添加文本信息之前,我们需要先导入相关的库。在这里我们使用matplotlib库和numpy库。

import matplotlib.pyplot as plt
import numpy as np
步骤二:生成数据

为了演示在boxplot上添加文本信息的过程,我们需要先生成数据。在这里我们使用numpy库的随机函数生成一组数据。

np.random.seed(2022)
data = [np.random.normal(0, std, 100) for std in range(1, 4)]
步骤三:绘制boxplot并添加文本信息

绘制boxplot时,我们可以使用plt.boxplot()方法。该方法的常用参数如下:

  • x:指定一个包含多列数据的列表或数据集,每列数据将对应一个箱线图。
  • labels:指定各个箱线图的标签。
  • notch:是否添加箱形图的缺口。
  • vert:指定是否需要垂直显示箱线图。
  • showmeans:是否显示数据的均值。
  • meanline:是否显示均值对应的线。

下面我们演示如何在boxplot上添加文本信息。 首先,我们使用plt.boxplot()方法绘制箱线图。其次,使用plt.text()方法在图表中添加文本信息。在本例中,我们在每个箱线图的位置上添加相应的标签,以显示该箱线图对应的数据。

fig, ax = plt.subplots()
ax.boxplot(data, labels=['A', 'B', 'C'], notch=True, vert=True, showmeans=True, meanline=True)

# 添加文本信息
for i in range(len(data)):
    y = data[i]
    x = np.random.normal(i + 1, 0.04, size=len(y))
    ax.text(i + 1, np.median(y), f'mean={np.mean(y):.2f}\nstd={np.std(y):.2f}', ha='center', va='center', fontsize=10, color='white',
            bbox=dict(facecolor='k', edgecolor='None', alpha=0.8))

# 设置横纵坐标轴名称
ax.set_xlabel('X')
ax.set_ylabel('Y')

# 显示图表
plt.show()
结论

我们可以使用matplotlib库在Python的boxplot上添加文本信息。添加文本信息可以帮助观察者更好地理解箱线图所呈现的数据。代码如下所示:

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(2022)
data = [np.random.normal(0, std, 100) for std in range(1, 4)]

fig, ax = plt.subplots()
ax.boxplot(data, labels=['A', 'B', 'C'], notch=True, vert=True, showmeans=True, meanline=True)

for i in range(len(data)):
    y = data[i]
    x = np.random.normal(i + 1, 0.04, size=len(y))
    ax.text(i + 1, np.median(y), f'mean={np.mean(y):.2f}\nstd={np.std(y):.2f}', ha='center', va='center', fontsize=10, color='white',
            bbox=dict(facecolor='k', edgecolor='None', alpha=0.8))

ax.set_xlabel('X')
ax.set_ylabel('Y')

plt.show()