【基础绘图】 09.小提琴图

效果图:

主要步骤:

1. 数据准备:生成随机数组

2. 数据处理:计算四分位数、中位数、均值、最大最小值

3. 图像绘制:绘制小提琴图

详细代码:着急的直接拖到最后有完整代码

步骤一:导入库包及图片存储路径并设置中文字体为宋体,西文为新罗马(没有的库包要先下好奥)

###############################################################################
# 导入库及文件
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParamsconfig = {"font.family": 'serif',"font.size": 12,"mathtext.fontset": 'stix',"font.serif": ['SimSun'],}
rcParams.update(config)
rcParams['axes.unicode_minus']=False

步骤二:生成随机数组

###############################################################################
figpath = r'H:/00.csdn/02fig/'# 生成随机数组
data1 = np.random.randint(5, 80, (100))
data2 = np.random.randint(30, 90, (100))
data3 = np.random.randint(10, 70, (100))
data = np.vstack((data1, data2, data3)).T # 这里是将上面三个数组合成一个

步骤三:计算四分位数、中位数、均值、最大最小值

# 计算25, 50, 75百分位数
quartile1, medians, quartile3 = np.percentile(data, [25, 50, 75], axis=0)# 计算均值, 最小值, 最大值
data_mean = np.mean(data, 0)
data_min = np.min(data, 0)
data_max = np.max(data, 0)x = [2, 4, 6]

步骤四:绘制琴体

###############################################################################
# 绘制图像
fig = plt.figure(figsize=(8, 8))   # 创建画布
ax = fig.add_axes([0.1, 0.6, 0.6, 0.4]) # 安排子图位置# 绘制琴体
vp = ax.violinplot(data, x, widths=1.8,showmeans=False, # 不展示平均值,这里都暂时设置为不显示,后面再统一设置showmedians=False, # 不展示中位数showextrema=False, # 不展示极值)# 设置琴体颜色,边框颜色及透明度
for body in vp['bodies']:body.set_facecolor('#D43F3A')body.set_edgecolor('black')body.set_alpha(1)

步骤五:绘制平均值,中位数,四分位数及极值

# 绘制平均值,中位数,四分位数及极值
ax.scatter(x, data_mean, marker=(5,1), color='y', s=20, zorder=3) # 绘制平均数
ax.scatter(x, medians, marker='>', color='white', s=20, zorder=3) # 绘制中位数
ax.vlines(x, quartile1, quartile3, color='k', linestyle='-', lw=5) # 绘制四分位数
ax.vlines(x, data_min, data_max, color='k', linestyle='-', lw=1) # 绘制极值

 步骤六:设置图中信息


# 设置图中信息
# xlim,ylim:设置x轴y轴显示得最大最小值
# xticks,yticks: 设置坐标轴刻度,可控制隔几个标注,本图为两个一标
# xticklabels,yticklabels:设置坐标轴刻度名称,维度要和xticks,yticks一致奥
# xlabel,ylabel:坐标轴名称
# title:图名
ax.set(xlim=(0, 8), xticks=np.arange(2, 8, 2), xticklabels=['a', 'b', 'c',], xlabel = 'x轴',ylim=(0, 100), yticks=np.arange(0, 101, 20), yticklabels=np.arange(0, 101, 20), ylabel = 'y轴',title='图名')  

  步骤七:保存图像

 
###############################################################################
# 输出并保存图像
plt.savefig(figpath+'009 小提琴图.png', bbox_inches = 'tight', dpi=600, format='png')
plt.show()

完整代码在这里:

###############################################################################
# 导入库及文件
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParamsconfig = {"font.family": 'serif',"font.size": 12,"mathtext.fontset": 'stix',"font.serif": ['SimSun'],}
rcParams.update(config)
rcParams['axes.unicode_minus']=False
###############################################################################
figpath = r'H:/00.csdn/02fig/'# 生成随机数组
data1 = np.random.randint(5, 80, (100))
data2 = np.random.randint(30, 90, (100))
data3 = np.random.randint(10, 70, (100))
data = np.vstack((data1, data2, data3)).T # 这里是将上面三个数组合成一个# 计算25, 50, 75百分位数
quartile1, medians, quartile3 = np.percentile(data, [25, 50, 75], axis=0)# 计算均值, 最小值, 最大值
data_mean = np.mean(data, 0)
data_min = np.min(data, 0)
data_max = np.max(data, 0)x = [2, 4, 6]###############################################################################
# 绘制图像
fig = plt.figure(figsize=(8, 8))   # 创建画布
ax = fig.add_axes([0.1, 0.6, 0.6, 0.4]) # 安排子图位置# 绘制琴体
vp = ax.violinplot(data, x, widths=1.8,showmeans=False, # 不展示平均值,这里都暂时设置为不显示,后面再统一设置showmedians=False, # 不展示中位数showextrema=False, # 不展示极值)# 设置琴体颜色,边框颜色及透明度
for body in vp['bodies']:body.set_facecolor('#D43F3A')body.set_edgecolor('black')body.set_alpha(1)# 绘制平均值,中位数,四分位数及极值
ax.scatter(x, data_mean, marker=(5,1), color='y', s=20, zorder=3) # 绘制平均数
ax.scatter(x, medians, marker='>', color='white', s=20, zorder=3) # 绘制中位数
ax.vlines(x, quartile1, quartile3, color='k', linestyle='-', lw=5) # 绘制四分位数
ax.vlines(x, data_min, data_max, color='k', linestyle='-', lw=1) # 绘制极值# 设置图中信息
# xlim,ylim:设置x轴y轴显示得最大最小值
# xticks,yticks: 设置坐标轴刻度,可控制隔几个标注,本图为两个一标
# xticklabels,yticklabels:设置坐标轴刻度名称,维度要和xticks,yticks一致奥
# xlabel,ylabel:坐标轴名称
# title:图名
ax.set(xlim=(0, 8), xticks=np.arange(2, 8, 2), xticklabels=['a', 'b', 'c',], xlabel = 'x轴',ylim=(0, 100), yticks=np.arange(0, 101, 20), yticklabels=np.arange(0, 101, 20), ylabel = 'y轴',title='图名')  
###############################################################################
# 输出并保存图像
plt.savefig(figpath+'009 小提琴图.png', bbox_inches = 'tight', dpi=600, format='png')
plt.show()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 6.x的ACL功能

Redis ACL Redis ACL (访问控制列表) 是 Access Control List 的缩写,它允许某些连接在可以执行的命令和可以访问的密钥方面受到限制。它的工作方式是,在连接后,客户端需要提供 username/用户名 和有效 password/密码 来进行 authenticate/身…

作为一名新能源汽车热管理仿真工程师需要具备哪些素养与技能

作为一名新能源汽车热管理仿真工程师,需要具备多方面的素养与技能,才能胜任这一岗位的工作。从工程素养到技术技能,再到沟通能力和团队合作,以下是对这些方面的探讨。 理论知识基础 首先,工程素养是新能源汽车热管理仿…

SQL分库分表

一、介绍 问题分析 随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈: 1. IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率较低。…

Python 开发 框架安全:Django SQL注入漏洞测试.(CVE-2021-35042)

什么是 Django 框架 Django 是一个用 Python 编写的 Web 应用程序框架。它提供了许多工具和库,使得开发 Web 应用程序变得更加容易和高效。Django 遵循了“MTV”(模型-模板-视图)的设计模式,将应用程序的不同组件分离开来&#x…

【图论 回溯 广度优先搜索】126. 单词接龙 II

本文涉及知识点 图论 回溯 深度优先搜索 广度优先搜索 图论知识汇总 LeetCode 126. 单词接龙 II 按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -> s2 -> … -> sk 这样的单词序…

新能源行业网间数据交换,更好用更专业的工具是什么?

新能源行业涵盖了多个方面,包括但不限于新能源汽车、可再生能源技术等。新能源行业发展具有重要的意义,新能源企业的研发数据极其重要,为了保障网络安全和数据安全,许多新能源企业采用逻辑隔离的方式进行网络隔离,此时…

【网络基础】网络层 之 IP协议与分片、网段划分、IP地址分类、子网掩码与路由

文章目录 网络层1. IP协议段格式1.1 分片1.2 *为什么存在分片 / 分片是什么 ?*1.3 *如何理解 / 实现 分片与组装*1.4 深入具体:分片 和 组装 的过程1.5 为什么不推荐 分片 2. 网段划分2.1 举例:国际间通信 && 国家内通信2.2 理解网段划分 3. IP…

[Kubernetes] Istio on Kubernetes 实践

文章目录 1.Kubernetes 创建2.Istio 部署2.1 下载 Istio2.2 安装 Istio 3.Istio on Kubernetes 实践3.1 部署 Bookinfo 示例应用3.2 确定入站 IP 和端口 1.Kubernetes 创建 主机名内部ip外部ipmaster192.168.66.2139.198.36.40node1192.168.66.3139.198.1.192node2192.168.66.…

传输层的端到端的流量控制和网络层的流量控制,有什么区别,他们互补在什么地方

传输层的端到端流量控制和网络层的流量控制在以下几个方面有所区别,并在一定程度上相互补充: 控制对象: 传输层的端到端流量控制主要关注单个会话或连接的流量。它在发送端和接收端之间进行,确保发送方不会发送过多的数据&#xf…

Ps 滤镜:粉笔和炭笔

Ps菜单:滤镜/滤镜库/素描/粉笔和炭笔 Filter Gallery/Sketch/Chalk & Charcoal 粉笔和炭笔 Chalk & Charcoal滤镜可以模拟传统的粉笔和炭笔画风格,通过特定的纹理和线条重绘图像的高光、中间色调和阴影区域。此滤镜非常适合于为数字图像添加手绘…

璩静是为了薅百度羊毛

关注卢松松,会经常给你分享一些我的经验和观点。 百度副总裁璩静离职了,网传她的年薪是1500万,而璩静在4月24日注册了一个文化传媒公司,大家都认为璩静是在为离职做准备。但松松我认为不是。 我认为:璩静成立新公司是…

[力扣题解]53. 最大子数组和

题目&#xff1a;53. 最大子数组和 思路 贪心法&#xff1b; 从头到尾遍历&#xff0c;对遇见的元素求和&#xff0c;如果和<0&#xff0c;就重新开始&#xff0c;因为前一段是负数&#xff0c;对我们希望的最大的和是没有帮助的&#xff1b; 代码 // 贪心法 // 和<0…

组织机构树形列表实现

源码地址&#xff1a;https://www.lanzouw.com/itjDc1ydraof 本来上传了源码&#xff0c;但是发现只能VIP才能下载&#xff0c;所以重新上传到蓝奏云上了&#xff0c;链接如下&#xff1a; 先看下效果图&#xff1a; 可以自己写HTML来自定义每一项的内容显示&#xff0c;包括…

物联网到底物联了个啥?——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网&#xff0c;这个听起来似乎颇具科技感和未来感的词汇&#xff0c;其实早已悄然渗透到我们生活的方方面面。从智能家居到智慧城市&#xff0c;从工业自动化到医疗健康&#xff0c;物联网技术正在以其独特的魅力改变着我们的生活方式…

2024.04.30校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招&实习 | 零跑汽车校园招聘 - 三电研发专场&#xff08;内推&#xff09; 校招&实习 | 零跑汽车校园招聘 - 三电研发专场&#xff08;内推&#xff09; 2、校招丨海尔智家2…

【ruoyi】docker部署 captchaImage接口 FontConfiguration空指针异常

后台服务报错captchaImage接口空指针异常&#xff0c;无法启动项目&#xff1a; [http-nio-4431-exec-27] ERROR c.r.f.w.e.GlobalExceptionHandler - [handleRuntimeException,93] - 请求地址/captchaImage,发生未知异常.java.lang.NullPointerException: nullat sun.awt.Font…

鸿蒙开发-ArkTS语言-XML

鸿蒙开发-UI-web 鸿蒙开发-UI-web-页面 鸿蒙开发-ArkTS语言-基础类库 鸿蒙开发-ArkTS语言-并发 鸿蒙开发-ArkTS语言-并发-案例 鸿蒙开发-ArkTS语言-容器 鸿蒙开发-ArkTS语言-非线性容器 文章目录 前言 一、XML概述 二、XML生成 三、XML解析 1.解析XML标签和标签值 2.解析XML属性…

conan2 基础入门(05)-(静态库动态库)(DebugRelease)

conan2 基础入门(05)-(静态库&动态库)(Debug&Release) 文章目录 conan2 基础入门(05)-(静态库&动态库)(Debug&Release)⭐准备预备文件和Code ⭐静态库&动态库静态库动态库 ⭐Debug&ReleaseReleaseDebug END视频教学settings.yml ⭐准备 本文均在windo…

let和const命令

2.1.1 基本用法 ES6新增了let命令&#xff0c;用于生命变量。其用法类似于var&#xff0c;但是所声明的变量只在let命令所在的代码块内有效。 {let a 10&#xff1b;var b 1&#xff1b; }a//ReferenceError&#xff1a;a is not defined b//1上面的代码在代码块中分别用le…

iOS LQG开发框架(持续更新)

基本规则 开发便利性为前提&#xff0c;妥协性能可维护性为前提可读性MVC各部分职责一定要清晰&#xff0c;controll类里面功能尽量抽离成helper&#xff0c;功能一定要清晰&#xff0c;这个非常重要&#xff0c;对代码可读性提升非常高方法内部尽量使用局部变量&#xff0c;最…