box plot matplotlib

box plot matplotlib

参考:box plot matplotlib

在数据可视化领域,box plot 是一种常用的图表类型,能够展示数据的分布、中位数、四分位数等统计信息。在本文中,我们将详细介绍如何使用 Matplotlib 库来绘制 box plot,并且演示不同场景下的使用方法。

创建简单的 box plot

首先,让我们创建一个简单的 box plot,展示一组数据的分布情况。

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(0, 1, 100)
plt.boxplot(data)
plt.show()

Output:

box plot matplotlib

在上面的示例代码中,我们生成了一个服从标准正态分布的随机数据,并使用 plt.boxplot() 函数绘制了对应的 box plot。

添加标签和标题

有时候,我们需要为 box plot 添加一些标签和标题,以便更好地说明数据的含义。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 1.5, 100)
plt.boxplot([data1, data2], labels=['Group 1', 'Group 2'])
plt.title('Comparison of Two Groups')
plt.xlabel('Groups')
plt.ylabel('Values')
plt.show()

Output:

box plot matplotlib

在上面的示例中,我们创建了两组随机数据,并为它们添加了标签、标题以及坐标轴的标签。

更改箱线图的样式

在 Matplotlib 中,我们可以通过设置不同的参数来修改 box plot 的样式,比如箱体颜色、线条颜色、离群值的显示等。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 1.5, 100)
plt.boxplot([data1, data2], patch_artist=True, boxprops=dict(facecolor='skyblue'))
plt.show()

Output:

box plot matplotlib

在这个示例中,我们为 box plot 的箱体填充了天蓝色,并且禁用了离群值的显示。

水平排列的箱线图

除了默认的垂直箱线图,Matplotlib 还支持绘制水平排列的箱线图,适用于更加紧凑的布局。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 1.5, 100)
plt.boxplot([data1, data2], vert=False)
plt.show()

Output:

box plot matplotlib

通过设置 vert=False 参数,我们可以将箱线图排列在水平方向上。

多组箱线图的比较

有时候,我们需要同时比较多组数据的分布情况,这时可以使用 Matplotlib 来绘制多组箱线图的比较。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 1.5, 100)
data3 = np.random.normal(-1, 1, 100)
plt.boxplot([data1, data2, data3], labels=['Group 1', 'Group 2', 'Group 3'])
plt.show()

Output:

box plot matplotlib

在这个示例中,我们创建了三组随机数据,并使用箱线图将它们进行比较。

自定义箱线图的显示方式

Matplotlib 提供了丰富的参数,可以让我们自定义箱线图的显示方式,比如调整箱体的宽度、显示中位线、更改离群值的样式等。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 1.5, 100)
plt.boxplot([data1, data2], widths=0.5, medianprops=dict(color='red'), flierprops=dict(marker='o', markerfacecolor='green', markersize=10))
plt.show()

Output:

box plot matplotlib

在这个示例中,我们设置了箱体的宽度为 0.5,将中位线的颜色设为红色,离群值的样式为绿色的实心圆点。

分组箱线图

除了比较不同组数据的分布,有时候我们还需要在箱线图中展示分组内部的数据分布情况,这时可以使用分组箱线图。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(0, 1, 100)
data3 = np.random.normal(1, 1.5, 100)
data4 = np.random.normal(1, 1.5, 100)
plt.boxplot([data1, data2, data3, data4], positions=[1, 2, 4, 5])
plt.show()

Output:

box plot matplotlib

通过设置 positions 参数,我们可以指定每组数据箱线图的位置,进而展示分组内部的数据分布情况。

嵌套箱线图

在一些特定场景下,我们需要在箱线图中展示更加复杂的数据结构,比如嵌套箱线图,Matplotlib 也能够很好地支持这样的需求。

import matplotlib.pyplot as plt
import numpy as np

data = [np.random.normal(0, 1, 100), np.random.normal(1, 1.5, 100), np.random.normal(-1, 0.5, 100)]
plt.boxplot(data, notch=True, patch_artist=True, positions=[1, 2, 3], labels=['Group 1', 'Group 2', 'Group 3'])
plt.show()

Output:

box plot matplotlib

在这个示例中,我们创建了一个嵌套箱线图,展示了三组数据的分布情况,并为其增加了标签和区分度。

多面板箱线图

最后,有时候我们需要在一张图中展示多个子图,可以使用 Matplotlib 的多面板箱线图功能来实现这个需求。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(0, 1, 100)
data2 = np.random.normal(1, 1.5, 100)
data3 = np.random.normal(-1, 0.5, 100)
fig, axs = plt.subplots(2, 2)
axs[0, 0].boxplot(data1)
axs[0, 1].boxplot(data2)
axs[1, 0].boxplot(data3)
plt.show()

Output:

box plot matplotlib

通过创建多个子图,并在不同的子图中绘制不同的箱线图,可以在一张图中展示多组数据的分布情况。

通过本文的介绍,我们了解了如何使用 Matplotlib 来绘制各种类型的箱线图,包括简单的箱线图、自定义样式的箱线图、水平排列的箱线图、多组数据的比较、分组箱线图、嵌套箱线图以及多面板箱线图。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程