Matplotlib boxplot

Matplotlib boxplot

参考:Matplotlib Boxplot

概述

matplotlib 是一个Python绘图库,可以用于创建各种类型的图表,包括箱线图(boxplot)。箱线图是一种用于显示数值数据分布的统计学图表。它显示了一组数据的五个统计量:最小值、第一四分位数(Q1)、中位数、第三四分位数(Q3)和最大值。箱线之外的点被视为异常值。在本篇文章中,将详细介绍如何使用matplotlib创建箱线图,并提供多个示例代码。

示例1:简单的箱线图

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data)
plt.title('Simple Boxplot')
plt.show()

Output:

Matplotlib boxplot

创建基本箱线图

matplotlib中,可以使用boxplot函数创建基本箱线图。下面的示例展示了如何创建一个包含两组数据的简单箱线图。

示例2:基本箱线图

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100)
data2 = np.random.randn(100)
plt.boxplot([data1, data2])
plt.title('Basic Boxplot')
plt.show()

Output:

Matplotlib boxplot

自定义箱线图

可以通过设置参数来自定义箱线图的外观,包括线的颜色、填充颜色、标记样式等。下面的示例演示了如何自定义箱线图。

示例3:自定义箱线图外观

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data, boxprops={'color': 'red', 'linewidth': 2},
            whiskerprops={'color': 'green', 'linewidth': 2},
            capprops={'color': 'blue', 'linewidth': 2},
            flierprops={'marker': 'o', 'markerfacecolor': 'yellow', 'markeredgecolor': 'black'},
            medianprops={'color': 'purple', 'linewidth': 2})
plt.title('Customized Boxplot')
plt.show()

Output:

Matplotlib boxplot

添加标签和标题

为了让箱线图更具可读性,可以添加标签和标题。下面的示例展示了如何在箱线图上添加标签和标题。

示例4:添加标签和标题

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data)
plt.xticks([1], ['Data'])
plt.title('Boxplot with Label and Title')
plt.show()

Output:

Matplotlib boxplot

多个箱线图

除了显示单个箱线图外,还可以通过将多个箱线图放在同一幅图中来比较不同数据集之间的分布情况。下面的示例展示了如何创建多个箱线图。

示例5:多个箱线图

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100)
data2 = np.random.randn(100)
data3 = np.random.randn(100)
plt.boxplot([data1, data2, data3])
plt.title('Multiple Boxplots')
plt.show()

Output:

Matplotlib boxplot

水平箱线图

除了垂直箱线图外,还可以创建水平箱线图。下面的示例展示了如何创建水平箱线图。

示例6:水平箱线图

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data, vert=False)
plt.title('Horizontal Boxplot')
plt.show()

Output:

Matplotlib boxplot

分组箱线图

有时候需要将箱线图按照不同组别进行分组显示。下面的示例展示了如何创建分组箱线图。

示例7:分组箱线图

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100)
data2 = np.random.randn(100)
labels = ['Group1', 'Group2']
plt.boxplot([data1, data2], labels=labels)
plt.title('Grouped Boxplot')
plt.show()

Output:

Matplotlib boxplot

堆叠箱线图

有时候需要将箱线图堆叠在一起显示。下面的示例展示了如何创建堆叠箱线图。

示例8:堆叠箱线图

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100)
data2 = np.random.randn(100)
plt.boxplot([data1, data2], positions=[1, 2])
plt.title('Stacked Boxplot')
plt.show()

Output:

Matplotlib boxplot

箱线图的颜色映射

可以通过颜色映射来显示箱线图的不同分位数区域。下面的示例展示了如何使用颜色映射创建箱线图。

示例9:箱线图的颜色映射

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100)
data2 = np.random.randn(100)
plt.boxplot([data1, data2], patch_artist=True, notch=True, boxprops=dict(facecolor='lightblue'))
plt.title('Boxplot with Color Mapping')
plt.show()

Output:

Matplotlib boxplot

带有网格线的箱线图

可以通过添加网格线来对箱线图的各个部分进行更清晰的标记。下面的示例展示了如何创建带有网格线的箱线图。

示例10:带有网格线的箱线图

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data, showmeans=True)
plt.grid(axis='y')
plt.title('Boxplot with Gridlines')
plt.show()

Output:

Matplotlib boxplot

箱线图与直方图结合显示

有时候需要将箱线图与直方图结合显示,以便更好地理解数据的分布情况。下面的示例展示了如何创建箱线图与直方图的结合显示。

示例11:箱线图与直方图结合显示

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
fig, axs = plt.subplots(2)
axs[0].boxplot(data)
axs[1].hist(data, bins=20)
plt.title('Boxplot with Histogram')
plt.show()

Output:

Matplotlib boxplot

多个箱线图并排显示

有时候需要将多个箱线图并排显示,以便比较不同数据的分布情况。下面的示例展示了如何创建多个箱线图并排显示。

示例12:多个箱线图并排显示

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100)
data2 = np.random.randn(100)
fig, axs = plt.subplots(1, 2)
axs[0].boxplot(data1)
axs[1].boxplot(data2)
plt.title('Multiple Boxplots Side by Side')
plt.show()

Output:

Matplotlib boxplot

箱线图与散点图结合显示

除了结合直方图外,还可以将箱线图与散点图结合显示,以更全面地展示数据的分布情况。下面的示例展示了如何创建箱线图与散点图的结合显示。

示例13:箱线图与散点图结合显示

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100)
data2 = np.random.randn(100)
plt.boxplot(data1)
plt.scatter(np.ones(len(data1)), data1, alpha=0.5)
plt.boxplot(data2)
plt.scatter(2*np.ones(len(data2)), data2, alpha=0.5)
plt.title('Boxplot with Scatter Plot')
plt.show()

Output:

Matplotlib boxplot

设定箱线图的均值标记

可以通过设置参数来标记箱线图的均值值。下面的示例展示了如何在箱线图上标记均值值。

示例14:箱线图的均值标记

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data, showmeans=True, meanline=True, meanprops={'color': 'red', 'linewidth': 2})
plt.title('Boxplot with Mean Marker')
plt.show()

Output:

Matplotlib boxplot

自定义箱线图的横线标记

除了标记均值值外,还可以自定义箱线图的横线标记。下面的示例展示了如何自定义箱线图的横线标记。

示例15:自定义横线标记的箱线图

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data, showmeans=True, meanline=True, meanprops={'color': 'red', 'linewidth': 2},
            whiskerprops=dict(color='blue', linewidth=2, linestyle='--'))
plt.title('Boxplot with Custom Horizontal Line Marker')
plt.show()

Output:

Matplotlib boxplot

箱线图着色的选项设置

可以通过设置参数来自定义箱线图的着色选项,包括箱体、须、标记等部分。下面的示例展示了如何设置着色选项。

示例16:自定义箱线图的着色选项

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data, patch_artist=True, boxprops=dict(facecolor='lightblue', edgecolor='blue'),
            whiskerprops=dict(color='green', linewidth=2),
            flierprops=dict(marker='o', markerfacecolor='yellow', markeredgecolor='black'))
plt.title('Boxplot with Custom Coloring Options')
plt.show()

Output:

Matplotlib boxplot

高级箱线图定制

使用matplotlib,可以对箱线图进行高级定制,包括修改坐标轴、添加注释等。下面的示例展示了如何进行高级箱线图定制。

示例17:高级箱线图定制

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
fig, ax = plt.subplots()
box = ax.boxplot(data)
ax.set_title('Advanced Boxplot Customization')
ax.annotate('Outlier', xy=(1, 3), xytext=(0.5, 4),
            arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()

Output:

Matplotlib boxplot

子图中的多个箱线图

在同一个图中显示多个箱线图有助于比较不同数据集或不同实验条件之间的分布情况。下面的示例展示了如何在子图中显示多个箱线图。

示例18:子图中的多个箱线图

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100)
data2 = np.random.randn(100)
fig, axs = plt.subplots(2)
axs[0].boxplot(data1)
axs[1].boxplot(data2)
plt.title('Multiple Boxplots in Subplots')
plt.show()

Output:

Matplotlib boxplot

通过调整箱线宽度来展示数据分布

可以通过调整箱线的宽度来更加清晰地展示数据分布情况。下面的示例展示了如何调整箱线宽度来展示数据分布。

示例19:调整箱线宽度展示数据分布

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.boxplot(data, widths=0.5)
plt.title('Boxplot with Adjusted Box Width')
plt.show()

Output:

Matplotlib boxplot

通过以上示例,读者可以了解如何使用matplotlib库创建各种风格和类型的箱线图,并根据需要进行自定义。箱线图是一种强大的可视化工具,可以帮助我们更好地理解和分析数据的分布情况。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程