基于Python matplotlib库怎么绘制箱线图
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了基于Python matplotlib库怎么绘制箱线图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Python matplotlib库怎么绘制箱线
千家信息网最后更新 2026年11月02日基于Python matplotlib库怎么绘制箱线图
这篇文章主要介绍了基于Python matplotlib库怎么绘制箱线图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Python matplotlib库怎么绘制箱线图文章都会有所收获,下面我们一起来看看吧。
1. 关于箱线图 及 plt.boxplot()方法
箱线图又称箱形图,有的地方也可以叫盒须图。使用箱线图的好处是可以以一种相对稳定的方式描述数据离散分布情况,识别数据中的异常值。
在pthon的matplotlib库中绘制箱线图使用的是plt.boxplot()方法。
该方法的主要参数如下
| 参数 | 描述 |
|---|---|
| x | 要绘制箱线图的数据 |
| notch | 是否以凹凸形式展现箱线图,默认为非凹凸 |
| sym | 指定异常点的形状,默认为加号(+)显示 |
| vert | 是否需要将箱形图垂直摆放 |
| whis | 指定上下限与上下四分位的距离。默认为1.5倍的四分位差 |
| position | 指定箱型图的位置。默认为[0, 1, 2] |
| widths | 指定箱型图的宽度,默认为0.5 |
| patch_artist | 是否填充箱体颜色 |
| meanline | 是否用线的形式表示均值,默认用点的形式来表示。showmeans为True时这个参数才有意义 |
| showmeans | 是否显示均值,默认不显示 |
| showcaps | 是否显示箱线图顶端和末端的两条线。默认是不显示的 |
| showbox | 是否显示箱体,默认显示 |
| showfliers | 是否显示异常值,默认显示 |
| boxprops | 设置箱体的属性,如边框色、填充色等。patch_artist为True时填充箱体颜色(facecolor键)才有效 |
| medianprops | 设置中位数的属性,如线的类型、粗细等 |
| meanprops | 设置均值的属性,如点的大小颜色等 |
| capprops | 设置箱型图顶端和末端线条的属性,如颜色、粗细等 |
| whiskerprops | 设置须的属性。如颜色、粗细、线的类型等 |
2. 绘制一幅简单的箱线图
使用随机数种子随机生成三组随机但固定的数据。以用来绘制三个箱线个体(一张图)。
全局字体使用楷体。
import matplotlib.pyplot as pltimport numpy as npfig = plt.figure(1, facecolor='#33ff99', figsize=(10, 6))plt.rcParams['font.sans-serif'] = ['STKAITI']plt.rcParams['axes.unicode_minus'] = Falseplt.rcParams['axes.facecolor'] = '#cc00ff'np.random.seed(30)data1 = np.random.randint(20, 100, 200)data2 = np.random.randint(30, 120, 200)data3 = np.random.randint(40, 110, 200)plt.boxplot([data1, data2, data3])plt.xticks(range(1, 4), ['A型', 'B型', 'C型'], fontsize=20)plt.yticks(fontsize=20)plt.title('箱线图', fontsize=25, color='#0033cc')plt.show()图像效果如下:
3. 绘制一幅更精致的图像
下边的数据中,修改了一下数据。上边随机产生的数据因为较为均匀,所以很难产生异常值,达不到箱线图的预期展示效果。
使用 * 符号来标记异常值。并使用线来标出每组数据的均值。
import matplotlib.pyplot as pltimport numpy as npfig = plt.figure(1, facecolor='#33ff99', figsize=(10, 6))plt.rcParams['font.sans-serif'] = ['STKAITI']plt.rcParams['axes.unicode_minus'] = Falseplt.rcParams['axes.facecolor'] = '#cc00ff'np.random.seed(110)data1 = np.random.randint(20, 100, 200)data2 = np.random.randint(30, 120, 200)data3 = np.random.randint(40, 110, 200)# 修改几个值,作为异常值,方便展示data1[100:102] = [142, 150]data3[100:103] = [1, 5, 154]plt.boxplot([data1, data2, data3], notch=True, sym='*', patch_artist=True, boxprops={'color': '#ffff00', 'facecolor': '#0066ff'}, capprops={'color': '#ff3333', 'linewidth': 2}, showmeans=True, meanline=True )plt.xticks(range(1, 4), ['A型', 'B型', 'C型'], fontsize=20)plt.yticks(fontsize=20)plt.title('箱线图', fontsize=25, color='#0033cc')plt.show()代码执行效果如下:
4. 异常值的标准
通过whis参数可以修改判断异常值的标准。默认将不在【均值±1.5倍四分位差】范围内的判断为异常值。
在上述代码的基础上稍作修改:
设置whis=2
import matplotlib.pyplot as pltimport numpy as npfig = plt.figure(1, facecolor='#33ff99', figsize=(10, 6))plt.rcParams['font.sans-serif'] = ['STKAITI']plt.rcParams['axes.unicode_minus'] = Falseplt.rcParams['axes.facecolor'] = '#cc00ff'np.random.seed(110)data1 = np.random.randint(20, 100, 200)data2 = np.random.randint(30, 120, 200)data3 = np.random.randint(40, 110, 200)# 修改几个值,作为异常值,方便展示data1[100:102] = [142, 150]data3[100:103] = [1, 5, 154]plt.boxplot([data1, data2, data3], whis=2, notch=True, sym='*', patch_artist=True, boxprops={'color': '#ffff00', 'facecolor': '#0066ff'}, capprops={'color': '#ff3333', 'linewidth': 2}, showmeans=True, meanline=True )plt.xticks(range(1, 4), ['A型', 'B型', 'C型'], fontsize=20)plt.yticks(fontsize=20)plt.title('箱线图', fontsize=25, color='#0033cc')plt.show()则结果中已经不再有异常值:
5. 异常值的输出
上文只是将异常值以可视化的方式呈现在了读者眼前。当然,做数据分析时仅仅这样是不够的,通常还需要对数据进行处理,如去除。
下边的python代码来完成异常值的输出:
import numpy as npnp.random.seed(110)data1 = np.random.randint(20, 100, 200)data2 = np.random.randint(30, 120, 200)data3 = np.random.randint(40, 110, 200)# 修改几个值,作为异常值,方便展示data1[100:102] = [142, 150]data3[100:103] = [1, 5, 154]Q1 = np.quantile(a=data3, q=0.25)Q3 = np.quantile(a=data3, q=0.75)# 计算 四分位差QR = Q3 - Q1# 下限 与 上线low_limit = Q1 - 1.5 * QRup_limit = Q3 + 1.5 * QRprint('下限为:', low_limit)print('上限为:', up_limit)print('异常值有:')print(data3[(data3 < low_limit) + (data3 > up_limit)])关于"基于Python matplotlib库怎么绘制箱线图"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"基于Python matplotlib库怎么绘制箱线图"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
线图
数据
均值
属性
颜色
参数
箱体
代码
形式
效果
方法
知识
粗细
上下
下限
内容
凹凸
图像
方式
标准
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
科技股互联网
朗新科技与工业互联网
互联网最新的科技有限公司
互联网中国科技
喔噻互联网科技
兼蜜互联网科技
哈尔滨秒房互联网科技有限公司
山东吉时兔互联网科技有限公司
科技与互联网的利与弊
深圳前海聚择互联网科技有限公司
创业天下互联网科技有限公司
恒生互联网科技指数跳水
工业互联网展湾科技股份有限公司
电子商务与互联网科技的关系
富国互联网金融科技混合基金
昆明中奇联合互联网科技
兰石爱特工业互联网科技分公司
科技互联网公司两年变化
重庆科技产业互联网有哪些
精品咖啡豆
猪兼强互联网科技
深圳齐家互联网科技
互联网科技公司介绍
互联网金融科技委员会
全球顶尖互联网科技公司
科技大学互联网
科技互联网的核心竞争力
唐山双旺合互联网科技产业园
众联互联网络科技