matplotlib boxplot

matplotlib boxplot

参考:boxplot matplotlib

在数据分析和可视化中,boxplot(箱线图)是一种常用的工具,用于展示一组数据的五数概括:最小值、第一四分位数、中位数、第三四分位数和最大值。通过箱线图,我们可以直观地了解数据的分布和离散程度。

1. 基本boxplot

下面是一个简单的示例代码,展示如何使用matplotlib创建一个基本的箱线图:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 创建箱线图
plt.boxplot(data)

plt.title('Basic Boxplot')
plt.show()

Output:

matplotlib boxplot

运行以上代码,我们可以得到一个基本的箱线图,显示了数据的五数概括。

2. 自定义箱线图的颜色和形状

我们可以通过设置参数来自定义箱线图的颜色和形状。下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 自定义箱线图的颜色和形状
plt.boxplot(data, boxprops=dict(color='blue', linestyle='--'), whiskerprops=dict(color='red', linestyle='-.'),
            flierprops=dict(marker='o', markersize=8, markerfacecolor='green'))

plt.title('Customized Boxplot')
plt.show()

Output:

matplotlib boxplot

在这个示例中,我们通过设置boxpropswhiskerpropsflierprops参数来自定义箱线图的箱体、whisker和flier的颜色和形状。

3. 添加网格线

为了更清晰地展示数据分布,我们可以在箱线图中添加网格线。下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 添加网格线
plt.boxplot(data)
plt.grid(True)

plt.title('Boxplot with Grid')
plt.show()

Output:

matplotlib boxplot

运行以上代码,我们可以看到箱线图上添加了网格线,有助于更准确地读取数据。

4. 多组数据的箱线图

除了单组数据,箱线图也可以用来展示多组数据的分布情况。下面是一个示例代码,展示如何绘制包含多组数据的箱线图:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)

# 生成多组随机数据
data1 = np.random.randn(100)
data2 = np.random.randn(100) + 2

# 创建多组数据的箱线图
plt.boxplot([data1, data2])

plt.title('Boxplot with Multiple Data')
plt.show()

Output:

matplotlib boxplot

在这个示例中,我们生成了两组随机数据,并使用plt.boxplot()函数同时绘制了这两组数据的箱线图。

5. 水平箱线图

除了竖直的箱线图,matplotlib也支持绘制水平的箱线图。下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 绘制水平箱线图
plt.boxplot(data, vert=False)

plt.title('Horizontal Boxplot')
plt.show()

Output:

matplotlib boxplot

通过设置vert=False参数,我们可以将箱线图绘制为水平方向,有时候会更适合显示较多数据。

6. 添加标签

在箱线图中,我们可以添加标签来说明每组数据的含义。下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 添加标签
plt.boxplot([data1, data2], labels=['Group 1', 'Group 2'])

plt.title('Boxplot with Labels')
plt.show()

通过设置labels参数,我们可以为每组数据添加标签,更清晰地表明数据的来源。

7. 比较多个数据集的箱线图

有时候,我们需要将多个数据集的箱线图进行比较。下面是一个示例代码,展示如何比较多组数据集的箱线图:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)

# 生成多组随机数据
data3 = np.random.randn(100) - 1
data4 = np.random.randn(100) + 1

# 比较多个数据集的箱线图
plt.boxplot([data1, data2, data3, data4], labels=['Group 1', 'Group 2', 'Group 3', 'Group 4'])

plt.title('Comparing Multiple Boxplots')
plt.show()

在这个示例中,我们生成了另外两组随机数据,并使用plt.boxplot()函数比较了这四组数据集的箱线图。

8. 分组箱线图

有时候我们需要将箱线图按照不同的分组进行展示,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(10)
# 生成多组随机数据
data1 = np.random.randn(100)
data2 = np.random.randn(100) + 2

# 分组箱线图
data_group1 = [data1, data2]
data_group2 = [data3, data4]

plt.boxplot(data_group1)
plt.boxplot(data_group2)

plt.title('Grouped Boxplot')
plt.show()

在这个示例中,我们将数据分成两组,并分别绘制了这两组数据的箱线图。

9. 堆叠箱线图

在一些场景下,我们需要将箱线图进行堆叠展示,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(10)
# 生成多组随机数据
data1 = np.random.randn(100)
data2 = np.random.randn(100) + 2
data3 = np.random.randn(100) - 1
data4 = np.random.randn(100) + 1

# 堆叠箱线图
plt.boxplot([data1, data2], positions=[1, 2])
plt.boxplot([data3, data4], positions=[3, 4])

plt.title('Stacked Boxplot')
plt.show()

Output:

matplotlib boxplot

通过设置positions参数,我们可以实现堆叠箱线图的效果,更直观地比较不同数据集的分布情况。

10. 设置箱线图的宽度

我们也可以通过width参数来设置箱线图的宽度,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 设置箱线图的宽度
plt.boxplot(data, width=0.5)

plt.title('Boxplot with Width')
plt.show()

通过设置width参数,我们可以调整箱线图的宽度,更好地控制箱线图的显示效果。

11. 添加颜色渐变

我们可以通过cmap参数来为箱线图添加颜色渐变,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 添加颜色渐变
plt.boxplot(data, boxprops=dict(color=plt.cm.viridis(0.7)))

plt.title('Boxplot with Color Gradient')
plt.show()

Output:

matplotlib boxplot

在这个示例中,我们使用plt.cm模块的viridis颜色映射函数实现了箱线图颜色的渐变效果。

12. 设置箱线图的边缘

我们可以通过patch_artist参数来设置箱线图的边缘,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 设置箱线图的边缘
plt.boxplot(data, patch_artist=True)

plt.title('Boxplot with Patch Artist')
plt.show()

Output:

matplotlib boxplot

通过设置patch_artist=True参数,我们可以将箱线图中的箱体边缘填充颜色,更好地区分不同部分。

13. 旋转y轴标签

有时候我们需要将y轴标签进行旋转,以适应较长的标签内容。下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 旋转y轴标签
plt.boxplot(data)
plt.xticks(rotation=45)

plt.title('Boxplot with Rotated Y-labels')
plt.show()

Output:

matplotlib boxplot

通过设置plt.xticks(rotation=45)可以实现y轴标签的旋转效果,适应长标签内容的显示需求。

14. 改变箱线图的填充颜色

我们可以通过设置facecolor参数来改变箱线图的填充颜色,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 改变箱线图的填充颜色
plt.boxplot(data, boxprops=dict(facecolor='orange'))

plt.title('Boxplot with Custom Fill Color')
plt.show()

在这个示例中,我们通过设置facecolor='orange'参数来改变箱线图箱体的填充颜色。

15. 分离离群点和箱体

有时候我们需要将离群点和箱体分开显示,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 分离离群点和箱体
plt.boxplot(data, flierprops=dict(marker='o', markersize=5, linestyle='none'))

plt.title('Boxplot with Separated Outliers')
plt.show()

Output:

matplotlib boxplot

通过设置flierprops=dict(markersize=5, linestyle='none')参数,我们可以将离群点和箱体分开显示,更清晰地展示数据的离散程度。

16. 透明箱体

我们也可以通过设置alpha参数来实现箱体的透明效果,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 透明箱体
plt.boxplot(data, boxprops=dict(alpha=0.5))

plt.title('Boxplot with Transparent Box')
plt.show()

Output:

matplotlib boxplot

通过设置boxprops=dict(alpha=0.5)参数,我们可以将箱体设为半透明,更好地展示数据分布情况。

17. 添加图例

当箱线图包含多组数据时,我们可以通过添加图例来进行标识,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(10)
# 生成多组随机数据
data1 = np.random.randn(100)
data2 = np.random.randn(100) + 2
data3 = np.random.randn(100) - 1
data4 = np.random.randn(100) + 1

# 添加图例
plt.boxplot([data1, data2], labels=['Group 1', 'Group 2'])
plt.legend()

plt.title('Boxplot with Legends')
plt.show()

通过使用plt.legend()函数,我们可以为箱线图添加图例,更清晰地展示不同数据组的含义。

18. 自定义箱线图的均值点样式

我们可以通过meanprops参数来自定义箱线图的均值点样式,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 自定义箱线图的均值点样式
plt.boxplot(data, meanprops=dict(marker='x', markersize=8, markerfacecolor='red'))

plt.title('Boxplot with Custom Mean Marker')
plt.show()

Output:

matplotlib boxplot

通过设置meanprops=dict(marker='x', markersize=8, markerfacecolor='red')参数,我们可以自定义箱线图中均值点的样式。

19. 添加背景色

我们可以通过设置facecolor参数为整个箱线图添加背景色,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = np.random.randn(100)

# 添加背景色
plt.boxplot(data)
plt.gcf().set_facecolor('lightblue')

plt.title('Boxplot with Background Color')
plt.show()

Output:

matplotlib boxplot

通过plt.gcf().set_facecolor('lightblue')可以为整个箱线图添加背景色,提高图表的可读性。

20. 设置箱线图的顺序

最后,我们可以通过设置vert=False参数来调整箱线图的显示顺序,下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(10)
# 生成多组随机数据
data1 = np.random.randn(100)
data2 = np.random.randn(100) + 2
data3 = np.random.randn(100) - 1
data4 = np.random.randn(100) + 1

# 设置箱线图的顺序
plt.boxplot([data2, data1])

plt.title('Boxplot with Order')
plt.show()

Output:

matplotlib boxplot

通过调整数据的顺序,可以改变箱线图的排列顺序,有助于比较不同数据集的分布情况。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程