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

news2024/11/14 22:01:02

效果图:

主要步骤:

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

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

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

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

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

###############################################################################
# 导入库及文件
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams

config = {
            "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 rcParams

config = {
            "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.coloradmin.cn/o/1666284.html

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

相关文章

使用C#和NMODBUS快速搭建MODBUS从站模拟器

MODBUS是使用广泛的协议,通讯测试时进行有使用。Modbus通讯分为主站和从站,使用RS485通讯时同一个网络内只能有一个主站,多个从站。使用TCP通讯时没有这方面的限制,可以同时支持多个主站的通讯读写。 开发测试时有各种复杂的需求&…

Milvus中那些年重要的基本概念

Milvus是一款开源的云原生向量数据库,专为海量向量数据的存储、检索和管理而设计。它支持实时的向量相似度搜索,适用于各种AI和机器学习应用场景。以下是Milvus的一些基本概念: 非结构化数据 非结构化数据是指那些不遵循特定数据模型或格式、…

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现:4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…

Linux服务器常用巡检命令,查看日志

查看日志 3.1 通过journalctl命令查看系统日志 命令&#xff1a;journalctl 3.2 通过tail查看系统日志 查看日志文件多少行代码&#xff1a;tail -n [行数] [日志文件] 4. 服务状态 4.1 查看指定服务的状态 命令&#xff1a;systemctl status <service> 比如查看防火墙…

React 第三十四章 React 渲染流程

现代前端框架都可以总结为一个公式&#xff1a;UI f&#xff08;state&#xff09; 上面的公式还可以进行一个拆分&#xff1a; 根据自变量&#xff08;state&#xff09;的变化计算出 UI 的变化根据 UI 变化执行具体的宿主环境的 API 对应的公式&#xff1a; const state…

Axure PR 10 制作顶部下拉三级菜单和侧边三级菜单教程和源码

在线预览地址&#xff1a;Untitled Document 2.侧边三级下拉菜单 在线预览地址&#xff1a;Untitled Document 文件包和教程下载地址&#xff1a;https://pan.quark.cn/s/77e55945bfa4 程序员必备资源网站&#xff1a;天梦星服务平台 (tmxkj.top)

事件代理 浅谈

事件代理是一种将事件处理委托给父元素或祖先元素来管理的技术。当子元素触发特定事件时&#xff0c;该事件不会直接在子元素上进行处理&#xff0c;而是会冒泡到父元素或祖先元素&#xff0c;并在那里进行处理。这样做的好处是可以减少事件处理函数的数量&#xff0c;提高性能…

PyCharm 集成 Git

目录 1、配置 Git 忽略文件 2、定位Git 3、使用pycharm本地提交 3.1、初始化本地库 3.2、添加到暂存区 3.3、提交到本地库 3.4、切换版本 4、分支操作 4.1、创建分支 4.2、切换分支 4.3、合并分支 5、解决冲突 1、配置 Git 忽略文件 作用&#xff1a;与项目的实际…

浅谈运维数据安全

在数字化日益深入的今天&#xff0c;运维数据安全已经成为企业信息安全体系中的核心要素。运维工作涉及到企业信息系统的各个方面&#xff0c;从硬件维护到软件升级&#xff0c;从网络配置到数据备份&#xff0c;无一不需要严谨的数据安全保障措施。本文将从运维数据安全的重要…

Ubuntu 22.04: VS Code 配置 C++ 编译及 CMake

一、VS Code 安装以及 C 编译环境配置 1. 在 Ubuntu 中安装 VS Code 笔者直接在 Ubuntu Software 中心安装 VS Code。也可以从VS Code官网下载 deb&#xff0c;解压 dpkg -i 安装。 2. VS Code 中配置 g/gcc 1) 安装 C/C 扩展 &#xff08;CtrlShiftX&#xff09; 2&#x…

HR人才测评,表达能力与岗位胜任力素质测评

什么是表达能力&#xff1f; 表达能力指的就是在语言能力基础之上发展形成的一种语用能力&#xff0c;可以结合自己所掌握的语言来实现交际的目的&#xff0c;能正确且灵活的把语言材料组合成为语言并且表达出想要表达的内容。 在百度百科中有如此定义&#xff0c;表达能力…

go-zero整合asynq实现分布式定时任务

本教程基于go-zero微服务入门教程&#xff0c;项目工程结构同上一个教程。 go-zero微服务入门教程&#xff08;点击进入&#xff09; 本教程主要实现go-zero整合asynq实现分布式定时任务。 本文源码&#xff1a;https://gitee.com/songfayuan/go-zero-demo &#xff08;教程源…

超详细的胎教级Stable Diffusion使用教程(五)

这套课程分为五节课&#xff0c;会系统性的介绍sd的全部功能和实操案例&#xff0c;让你打下坚实牢靠的基础 一、为什么要学Stable Diffusion&#xff0c;它究竟有多强大&#xff1f; 二、三分钟教你装好Stable Diffusion 三、小白快速上手Stable Diffusion 四、Stable dif…

【DevOps】Linux 安全:iptables 组成、命令及应用场景详解

导读&#xff1a;全面掌握 iptables&#xff1a;从基础到实践 在 Linux 系统中&#xff0c;iptables 是一个非常强大的工具&#xff0c;它不仅是系统管理员用来构建和管理网络防火墙的首选工具&#xff0c;而且也是一个功能丰富的网络流量处理系统。无论是进行包过滤、监控网络…

大数据测试

1、前言 大数据测试是对大数据应用程序的测试过程&#xff0c;以确保大数据应用程序的所有功能按预期工作。大数据测试的目标是确保大数据系统在保持性能和安全性的同时&#xff0c;平稳无差错地运行。 大数据是无法使用传统计算技术处理的大型数据集的集合。这些数据集的测试涉…

用大于meilisearch-java-0.7.0.jar的报错的解决

Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求&#xff0c;极快&#xff0c;单文件&#xff0c;超轻量。 所以&#xff0c;对于中小型项目来说…

OBS插件--复合模糊

复合模糊 复合是一款滤镜插件&#xff0c;支持多种模糊类型和多种蒙版效果。支持模糊源的部分显示区域&#xff0c;可以反选区域进行模糊&#xff0c;这个功能对于场景部分区域需要遮盖非常实用。 下面截图演示下操作步骤&#xff1a; 首先&#xff0c;打开 OBS直播助手 在…

德国Dürr杜尔机器人维修技巧分析

在工业生产中&#xff0c;杜尔工业机器人因其高效、精准和稳定性而备受青睐。然而&#xff0c;即便是最精良的设备&#xff0c;也难免会出现Drr机械手故障。 一、传感器故障 1. 视觉传感器故障&#xff1a;可能导致机器人无法正确识别目标物&#xff0c;影响工作效率。解决方法…

5.神经网络-激活函数

目录 1. 激活函数不是阶跃函数 1.1 激活函数和阶跃函数都是非线性函数 1.2 激活函数不是阶跃函数 2. sigmoid 函数 2.1 sigmoid 函数表达式 2.2 sigmoid 函数 Python 实现 2.4 sigmoid 函数图 3. ReLU 函数 3.1 ReLU 函数表达式 3.2 ReLU 函数 Python 实现 3.4 ReLU…

现代制造之数控机床篇

现代制造 有现代技术支撑的制造业&#xff0c;即无论是制造还是服务行业&#xff0c;添了现代两个字不过是因为有了现代科学技术的支撑&#xff0c;如发达的通信方式&#xff0c;不断发展的互联网&#xff0c;信息化程度加强了&#xff0c;因此可以为这两个行业增加了不少优势…