Matplotlib Box Plots

Matplotlib Box Plots

参考:matplotlib box plots

在数据分析和统计学中,箱形图(Box Plot)是一种用于表示一组数据分布情况的图表。它能够直观地显示数据的最小值、第一四分位数(Q1)、中位数、第三四分位数(Q3)和最大值,以及异常值。Matplotlib 是一个非常流行的 Python 绘图库,它提供了丰富的绘图功能,包括绘制箱形图。本文将详细介绍如何使用 Matplotlib 绘制箱形图,并提供多个示例代码。

基本箱形图

首先,我们从最基本的箱形图开始。以下是使用 Matplotlib 绘制单个箱形图的示例代码:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(loc=0, scale=1, size=100)
plt.boxplot(data)
plt.title("Box Plot Example - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

多个箱形图

接下来,我们将展示如何在同一图中绘制多个箱形图,以比较不同数据集的分布情况。

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(loc=0, scale=1, size=100)
data2 = np.random.normal(loc=1, scale=2, size=100)
data = [data1, data2]
plt.boxplot(data)
plt.title("Multiple Box Plots - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

自定义箱形图外观

Matplotlib 允许你自定义箱形图的外观,包括箱体颜色、异常值标记等。

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(loc=0, scale=1, size=100)
plt.boxplot(data, patch_artist=True, boxprops=dict(facecolor="cyan", color="blue"),
            whiskerprops=dict(color="green"), capprops=dict(color="red"),
            medianprops=dict(color="yellow"), flierprops=dict(markerfacecolor='r', marker='o'))
plt.title("Customized Box Plot - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

水平箱形图

箱形图可以是垂直的,也可以是水平的。以下是如何绘制水平箱形图的示例代码:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(loc=0, scale=1, size=100)
plt.boxplot(data, vert=False)
plt.title("Horizontal Box Plot - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

显示异常值

箱形图可以用来识别数据中的异常值。以下示例显示了如何绘制显示异常值的箱形图:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(loc=0, scale=1, size=100)
plt.boxplot(data, showfliers=True)
plt.title("Box Plot with Outliers - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

不显示异常值

有时候,我们可能不希望在箱形图中显示异常值。以下示例展示了如何隐藏异常值:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(loc=0, scale=1, size=100)
plt.boxplot(data, showfliers=False)
plt.title("Box Plot without Outliers - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

自定义异常值标记

我们还可以自定义异常值的标记样式,以下是示例代码:

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(loc=0, scale=1, size=100)
plt.boxplot(data, flierprops=dict(marker='D', color='r', markersize=8))
plt.title("Box Plot with Custom Outlier Markers - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

设置刻度标签

当绘制多个箱形图时,我们可能需要设置刻度标签以区分不同的数据集。以下是如何设置刻度标签的示例代码:

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(loc=0, scale=1, size=100)
data2 = np.random.normal(loc=1, scale=2, size=100)
data = [data1, data2]
plt.boxplot(data)
plt.xticks([1, 2], ['Dataset 1', 'Dataset 2'])
plt.title("Box Plots with Tick Labels - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

分组箱形图

分组箱形图可以用来比较不同组内的数据分布。以下是绘制分组箱形图的示例代码:

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.normal(loc=0, scale=1, size=100)
data2 = np.random.normal(loc=1, scale=2, size=100)
data3 = np.random.normal(loc=0.5, scale=1.5, size=100)
data4 = np.random.normal(loc=-0.5, scale=0.5, size=100)
data = [data1, data2, data3, data4]

positions = [1, 2, 4, 5]
plt.boxplot(data, positions=positions)
plt.title("Grouped Box Plots - how2matplotlib.com")
plt.show()

Output:

Matplotlib Box Plots

使用子图绘制箱形图

有时候,我们可能需要在同一图形窗口中绘制多个箱形图,但希望它们分布在不同的子图中。以下是使用子图绘制箱形图的示例代码:

import matplotlib.pyplot as plt
import numpy as np

fig, axs = plt.subplots(1, 2)

data1 = np.random.normal(loc=0, scale=1, size=100)
axs[0].boxplot(data1)
axs[0].set_title('First Box Plot - how2matplotlib.com')

data2 = np.random.normal(loc=1, scale=2, size=100)
axs[1].boxplot(data2)
axs[1].set_title('Second Box Plot - how2matplotlib.com')

plt.show()

Output:

Matplotlib Box Plots

通过上述示例代码,我们可以看到 Matplotlib 提供了丰富的功能来绘制和自定义箱形图。无论是基本的箱形图、多个箱形图、自定义外观的箱形图,还是水平箱形图、显示或隐藏异常值的箱形图,Matplotlib 都能够满足你的需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程