使用Matplotlib绘制箱线图:详细指南与示例

在数据分析和可视化领域,箱线图(Box Plot)是一种强大的工具,用于展示数据的分布特征,包括中位数、四分位数、异常值等。本文将详细介绍如何使用Matplotlib库在Python中绘制箱线图,并通过一个实际的血压数据集示例来指导读者。

1 箱线图的基本概念

箱线图是一种用于显示一组数据分散情况资料的统计图。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数,然后连接两个四分位数形成箱体,再将上边缘和下边缘与箱体相连接。

2 绘制箱线图的步骤

  1. 准备数据:首先,我们需要准备要绘制的数据。在本文的示例中,我们将使用模拟的血压数据集。
  2. 创建图形和轴对象:使用Matplotlib的subplots函数创建一个图形对象和轴对象。
  3. 绘制箱线图:使用轴对象的boxplot方法绘制箱线图。
  4. 美化图形:通过调整颜色、添加网格线、隐藏边框和设置刻度等方式美化图形。
  5. 保存和展示图形:使用savefig函数保存图形为文件,并使用show函数展示图形。

3 示例代码与解释

以下是一个完整的示例代码,用于绘制血压数据的箱线图:

import matplotlib.pyplot as plt
import numpy as np

# 假设这是6组病人血压数据集(这里用随机数据代替实际数据)
bp_data1 = np.random.normal(120, 10, 100)  # 收缩压均值120,标准差10,样本量100
bp_data2 = np.random.normal(130, 15, 100)
bp_data3 = np.random.normal(110, 12, 100)
bp_data4 = np.random.normal(140, 20, 100)
bp_data5 = np.random.normal(100, 8, 100)
bp_data6 = np.random.normal(125, 14, 100)

# 将所有数据整合到一个列表中
all_data = [bp_data1, bp_data2, bp_data3, bp_data4, bp_data5, bp_data6]

# 设置标签
labels = ['A', 'B', 'C', 'D', 'E', 'F']

# 创建一个图形对象和轴对象
fig, ax = plt.subplots(figsize=(12, 6))

# 设置全局字体大小
plt.rcParams['font.size'] = 12

# 绘制矩形箱线图
bplot = ax.boxplot(all_data,
                   vert=True,  # 箱体垂直对齐
                   patch_artist=True,  # 使用颜色填充
                   labels=labels)  # 设置x轴刻度标签
ax.set_title('Rectangular Box Plot\\n(Blood Pressure Data)')
ax.set_xlabel('Patient Groups')
ax.set_ylabel('Blood Pressure (mmHg)')

# 为箱线图设置颜色
colors = ['pink', 'lightblue', 'lightgreen', 'orange', 'purple', 'brown']
for patch, color in zip(bplot['boxes'], colors):
    patch.set_facecolor(color)

# 添加水平网格线
ax.yaxis.grid(True, linestyle='--', alpha=0.7)

# 隐藏图形的上边框和右边框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# 设置刻度向内显示
ax.tick_params(axis='both', which='major', direction='in')

# 调整布局以避免标签重叠
plt.tight_layout()

# 展示图形
plt.show()

# 以高分辨率保存图形为PDF文件
plt.savefig("box_plot.pdf", dpi=300)

4 代码解释与美化技巧

  1. 数据准备:我们使用numpy库的random.normal函数生成了六组模拟的血压数据,每组数据包含100个样本。
  2. 图形和轴对象:使用plt.subplots函数创建了一个图形对象和轴对象,并设置了图形的大小。
  3. 绘制箱线图:通过轴对象的boxplot方法绘制了箱线图,并设置了箱体垂直对齐、颜色填充和x轴刻度标签。
  4. 美化图形:我们为箱体设置了不同的颜色,添加了水平网格线,隐藏了图形的上边框和右边框,并将刻度设置为向内显示。这些美化技巧使得图形更加清晰和美观。
  5. 保存和展示图形:使用savefig函数将图形保存为PDF文件,并使用show函数展示图形。

5 总结

本文详细介绍了如何使用Matplotlib库在Python中绘制箱线图,并通过一个实际的血压数据集示例进行了演示。通过本文的学习,读者可以掌握绘制箱线图的基本步骤和美化技巧,并能够在实际的数据分析和可视化工作中灵活应用。希望本文能够对读者有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896594.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0开始linux(13)——进程(4)进程空间地址(1)

欢迎来到博主的专栏:从0开始linux 博主ID:代码小豪 文章目录 进程空间地址 还记得博主在之前介绍子进程时说过的话吗?子进程与父进程共享代码,而数据却不共享;这很好理解,因为子进程和父进程是不同的进程&a…

Java线程安全集合之COW

概述 java.util.concurrent.CopyOnWriteArrayList写时复制顺序表,一种采用写时复制技术(COW)实现的线程安全的顺序表,可代替java.util.ArrayList用于并发环境中。写时复制,在写入时,会复制顺序表的新副本&…

K8S调度不平衡问题分析过程和解决方案

不平衡问题排查 问题描述: 1、业务部署大量pod(据反馈,基本为任务型进程)过程中,k8s node内存使用率表现不均衡,范围从80%到百分之几; 2、单个node内存使用率超过95%,仍未发生pod驱逐,存在node…

Janus:开创统一的多模态理解和生成框架

Janus是DeepSeek开源的多模式自回归框架,统一了多模态理解和生成,既可以理解图片内容又可以生成图片。 1.简介 Janus 是一种新颖的自回归框架,它将多模态理解和生成统一起来。它通过将视觉编码解耦为单独的路径来解决以前方法的局限性&…

jmeter发送post请求

在jmeter中,有两种常用的请求方式,get和post.它们两者的区别在于get请求的参数一般是放在路径中,可以使用用户自定义变量和函数助手等方式进行参数化,而post请求的参数不能随url发送,而是作为请求体提交给服务器。而在…

OpenWRT 和 Padavan 路由器配置网络打印机 实现远程打印

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 之前有给大家介绍过 Armbian 安装 CUPS 作为打印服务器,像是 N1 盒子、玩客云,甚至是随身 WiFi 都可以通过 CUPS 来进行打印。但是有些朋友不想专门为打印机添置一个设备&#xff0…

Spring AI 1.0.0 M1版本新特性!

Spring AI 1.0.0 M1版本新特性介绍 前言一、在1.0.0 M1版本中,主要有以下新特性:1.ChatModel2.ChatClient3.多模态的支持4.模型评估RequestResponseAdvisor接口MessageChatMemoryAdvisorPromptChatMemoryAdvisorQuestionAnswerAdvisor动态过滤表达式 Vec…

爬虫逆向-js进阶(续写,搭建网站)

1.搭建简单网站1 from flask import Flask,render_template import requests import json app Flask(name)# **location**的温度是**temp**度,天气状况:**desc**app.route(/) # 绑定处理函数 def index_url():location 101010100data get_weather(lo…

黑马JavaWeb-day02

什么是JavaScript? JavaScript:简称Js,是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互 JavaScript和Java是完全不同的语言,无论是概念还是设计。但是基础语法类似。 JavaScript JavaScript引入方式…

第三方软件测试中心有什么特点?江苏软件测试中心推荐

随着软件市场的激烈竞争,软件企业越来越多,为了更好的服务用户以及专心于产品开发工作,将软件测试外包给第三方软件测试中心已经成为了行业发展趋势。第三方软件测试中心顾名思义就是区别于软件开发方和需求方的第三方存在,是专门…

使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期

在《使用 MongoDB 构建 AI》系列博文中,我们看到越来越多的企业正在利用 AI 技术优化产品研发和用户支持流程。例如,我们介绍了以下案例: Ventecon 的 AI 助手帮助产品经理生成和优化新产品规范 Cognigy 的对话式 AI 帮助企业使用任意语言&a…

《MYSQL实战45讲 》 优化器如何选择索引?

SHOW VARIABLES LIKE long_query_time; set long_query_time0 优化器如何选择索引? 1.扫描的行数 估计出各个索引大致的要扫描的行数,行数越少,效率越高。 索引的基数也叫区分度,就是这个索引所在的字段上不同的值又多少个。优…

10.21 多进程间通信-信号、消息队列

作业&#xff1a;使用消息队列实现两个进程间通信 编程代码&#xff1a;使用父子进程实现通信 msgsnd.c #include <myhead.h> //定义自定义函数用于接收僵尸进程 void handler(int signo){if(signoSIGCHLD){while(waitpid(-1,NULL,WNOHANG)>0);} } //定义存储消息队…

[云] Deploying Your First Serverless Application

• Goal: • Hands-on lab to get started with Serverless • Agenda: • Deploying Your First Serverless Application • Assignment Introduction Create and test function in AWS Lambda • Lets create an addition function using AWS Lambda. • To create the addi…

pipeline开发笔记

pipeline开发笔记 jenkins常用插件Build Authorization Token Root配置GitLab的webhooks(钩子)配置构建触发器--示例 piblish over sshBlue OceanWorkspace Cleanup PluginGit插件PipelineLocalization: Chinese (Simplified) --中文显示Build Environment Plugin 显示构建过程…

vscode离线状态ssh连接不断输入密码登不上:配置commit_id

如题&#xff0c;vscode在一个离线服务器上&#xff0c;通过remote-ssh登录远程服务器&#xff0c;不断弹出密码框&#xff0c;总是进不去&#xff0c;后来了解到主要是不同vscode版本需要下载对应抑制commit-id的vscode-server-linux-x64.tar.gz包。 1&#xff09;vscode, 点…

Jupyter Notebook汉化(中文版)

原版jupyter notebook是英文的&#xff0c;想要将其改为中文 在jupyter notebook所在环境输入以下命令 pip install jupyterlab-language-pack-zh-CN打开jupyter notebook&#xff0c;在设置语言中将其设置为中文

提升小学语文教学效果的思维导图方法

众所周知&#xff0c;教学不仅仅是站在讲台上传授知识&#xff0c;它还包括了备课、评估学生学习成果以及不断调整教学方法等多个环节。在面对教学中的各种挑战时&#xff0c;思维导图可以成为解决这些问题的有力工具。思维导图是一种利用图形来组织和表达发散性思维的工具&…

【DBA Part01】国产Linux上安装Oracle进行数据迁移

内容如下&#xff1a; 1.1.生产环境RHEL/OEL Linux8Oracle11gR2安装配置 1.2.国产麒麟操作系统Oracle11gR2安装配置 1.3.国产麒麟操作系统Oracle11gR2 RAC集群安装配置 1.4.Oracle11gR2迁移到国产麒麟操作系统&#xff08;单机/RAC&#xff09; 本阶段课程项目需求说明&am…

Spring配置/管理bean-IOC(控制反转) 非常详细!基于XML及其注解!案例分析! 建议复习收藏!

目录 1.Spring配置/管理bean介绍 2.基于XML配置bean 2.1基于id来获取bean对象 2.2基于类型获取bean对象 2.3通过指定构造器配置bean对象 2.4通过p名称空间配置bean 2.5通过ref配置bean(实现依赖注入) 2.6注入内部Bean对象&#xff0c;依赖注入另一种方式 2.7 注入集合…