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:
多个箱形图
接下来,我们将展示如何在同一图中绘制多个箱形图,以比较不同数据集的分布情况。
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 允许你自定义箱形图的外观,包括箱体颜色、异常值标记等。
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:
水平箱形图
箱形图可以是垂直的,也可以是水平的。以下是如何绘制水平箱形图的示例代码:
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:
显示异常值
箱形图可以用来识别数据中的异常值。以下示例显示了如何绘制显示异常值的箱形图:
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:
不显示异常值
有时候,我们可能不希望在箱形图中显示异常值。以下示例展示了如何隐藏异常值:
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:
自定义异常值标记
我们还可以自定义异常值的标记样式,以下是示例代码:
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:
设置刻度标签
当绘制多个箱形图时,我们可能需要设置刻度标签以区分不同的数据集。以下是如何设置刻度标签的示例代码:
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:
分组箱形图
分组箱形图可以用来比较不同组内的数据分布。以下是绘制分组箱形图的示例代码:
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:
使用子图绘制箱形图
有时候,我们可能需要在同一图形窗口中绘制多个箱形图,但希望它们分布在不同的子图中。以下是使用子图绘制箱形图的示例代码:
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 提供了丰富的功能来绘制和自定义箱形图。无论是基本的箱形图、多个箱形图、自定义外观的箱形图,还是水平箱形图、显示或隐藏异常值的箱形图,Matplotlib 都能够满足你的需求。