Boxplot 功能

Matplotlib 有自己的执行箱线图 。该函数的相关方面是,默认情况下,箱线图显示红线的中位数(百分位数 50%)。方框表示 Q1 和 Q3(百分位数 25 和 75),晶须给出了数据范围的概念(可能在 Q1 - 1.5 IQR; Q3 + 1.5 IQR; IQR 是四分位数间距,但缺乏确认)。另请注意,超出此范围的样本将显示为标记(这些标记为传单)。

注意: 并非所有 boxplot 实现都遵循相同的规则。也许最常见的箱线图使用胡须来表示最小值和最大值(使传单不存在)。另请注意,此图有时称为盒须图盒须**图

以下配方显示了你可以使用 boxplot 的当前 matplotlib 实现执行的一些操作:

import matplotlib.pyplot as plt
import numpy as np

X1 = np.random.normal(0, 1, 500)
X2 = np.random.normal(0.3, 1, 500)

# The most simple boxplot
plt.boxplot(X1)
plt.show()

# Changing some of its features
plt.boxplot(X1, notch=True, sym="o") # Use sym="" to shown no fliers; also showfliers=False
plt.show()

# Showing multiple boxplots on the same window
plt.boxplot((X1, X2), notch=True, sym="o", labels=["Set 1", "Set 2"])
plt.show()

# Hidding features of the boxplot
plt.boxplot(X2, notch=False, showfliers=False, showbox=False, showcaps=False, positions=[4], labels=["Set 2"])
plt.show()

# Advanced customization of the boxplot
line_props = dict(color="r", alpha=0.3)
bbox_props = dict(color="g", alpha=0.9, linestyle="dashdot")
flier_props = dict(marker="o", markersize=17)
plt.boxplot(X1, notch=True, whiskerprops=line_props, boxprops=bbox_props, flierprops=flier_props)
plt.show()

这导致以下图表:

StackOverflow 文档

  1. 默认的 matplotlib boxplot

StackOverflow 文档

  1. 使用函数参数更改 boxplot 的某些功能

StackOverflow 文档

  1. 同一绘图窗口中的多个箱图

StackOverflow 文档

  1. 隐藏箱线图的一些功能

StackOverflow 文档

  1. 使用道具进行箱图的高级自定义

如果你打算对你的 boxplot 进行一些高级定制,你应该知道你构建的道具词典(例如):

line_props = dict(color="r", alpha=0.3)
bbox_props = dict(color="g", alpha=0.9, linestyle="dashdot")
flier_props = dict(marker="o", markersize=17)
plt.boxplot(X1, notch=True, whiskerprops=line_props, boxprops=bbox_props, flierprops=flier_props)
plt.show()

…大部分(如果不是全部)指向 Line2D 对象。这意味着只有该类中可用的参数可以更改。你会注意到 whiskerpropsboxpropsflierpropscapprops 等关键字的存在。这些是你提供道具词典以进一步自定义它所需的元素。

注意:使用此实现进一步自定义 boxplot 可能会很困难。在某些情况下,使用其他 matplotlib 元素(例如补丁) 来构建自己的盒子图可能是有利的(例如,对盒元素进行相当大的改变)。