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

效果图:

主要步骤:

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.mfbz.cn/a/617002.html

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

相关文章

动态规划----股票买卖问题(详解)

目录 一.买卖股票的最佳时机: 二.买卖股票的最佳时机含冷冻期: 三.买卖股票的最佳时期含⼿续费: 四.买卖股票的最佳时机III: 五.买卖股票的最佳时机IV: 买卖股票的最佳时机问题介绍:动态规划买卖股票的最佳时机是一个经典的…

排序2——冒泡排序,快速排序(3种递归方式+3种非递归方式)

目录 1.交换排序 2.冒泡排序 2.1基本思路 1.1.2复杂度分析 3.快速排序 3.1基本思想 3.2Hoare版本(最初的) 3.2.1缺点 3.2.2优化 第一种——随机选key 第二种——三数取中 第三种——小区间优化 3.3挖坑版本(更好理解&#xff09…

【谷粒商城】01-环境准备

1.下载和安装VirtualBox 地址:https://www.virtualbox.org/wiki/Downloads 傻瓜式安装VirtualBox 2.下载和安装Vagrant官方镜像 地址:https://app.vagrantup.com/boxes/search 傻瓜式安装 验证是否安装成功 打开CMD,输入vagrant命令,是否…

pyqt5将ui文件转为python文件

在pyqt5中使用 pyuic将ui文件转为py文件: 例如:将home.ui文件转为vio_detect.py文件,所需命令如下: pyuic5 -x home.ui -o vio_detect.py

【Linux】基于 Jenkins+shell 实现更新服务所需文件 -->两种方式:ssh/Ansible

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

STL-Hashtable

hashtable hashtable是通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,这样在查找的时候就可以很快的找到该元素。 哈希函数 哈希函数的定义域必须包括需要存储的全部关键码,而如果散列表允许有m个地址时&#xff0c…

C++内存管理(1)

目录 1.new用法说明 2.new/delete在栈里面的运用 3.operator new/operator delete函数 4.构造函数的显式调用 5.malloc&&new&&free&&delete区别 1.new用法说明 (1)在C语言阶段,我们无论是为数组开辟空间&#x…

瀚高数据库(HighGoDB)Windows安装使用

1.下载 2.安装 瀚高数据库下载与安装(Windows版)-CSDN博客 3.连接工具 4.建库、建表操作 瀚高数据库管理工具-CSDN博客 *报错Cant access non-default database,需要右键数据库-设为活动对象 5.导入外部数据(迁移、对比&…

云贝教育 |【好课上新】ITSS服务工程师与服务经理认证培训

课程前言 ITSS是中国电子技术标准化研究院推出的,包含“IT 服务工程师”和“IT 服务经理”的系列培训。有效满足GB/T 28827.1 的符合性评估要求和ITSS服务资质升级要求。 IT 服务工程师”结合 IT服务从业人员能力规范和要求,从服务技术、服务技巧和服务…

Linux环境下parted工具使用

在工作中,我们经常会遇到大于分区大于2T的磁盘,由于系统盘最大不能超2T,我们会在做raid时将划分VD来进行装系统,但系统自动安装后无法将磁盘全部识别出来,管理员有时会要求手动对分区进行挂载,这个文档介绍…

基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 粒子群优化算法基础 4.2 PV系统及其最大功率点跟踪 4.3 PSO在PV MPPT中的应用 5.完整工程文件 1.课题概述 基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真。通过PSO粒子群优化进行最大功率…

Day25 代码随想录打卡|栈与队列篇---用队列实现栈

题目(leecode T225): 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将…

每日OJ题_贪心算法四④_力扣397. 整数替换

目录 力扣397. 整数替换 解析代码 力扣397. 整数替换 397. 整数替换 难度 中等 给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则可以用 n 1或n - 1替换 n 。 返回 n 变为 1 所需…

C# Linq中的自定义排序

1.开发过程中&#xff0c;会遇到OrderBy/OrderByDescending排序无法满足的情况&#xff0c;此时就需要自定义排序&#xff0c;按照想要的排序规则取排序&#xff0c;比如订单的状态等等。 2.自定义泛型比较器代码如下&#xff1a; /// <summary>/// 自定义泛型比较器(用…

【ArcGIS 小技巧脚本工具】批量修复CAD图层的数据源

当你打开ArcPro文档的时候&#xff0c;看到内容列表满屏红色感叹号。 新手可能会心脏骤停&#xff0c;久经沙场的规划人只会微微一笑。随机选中一个幸运的红色感叹号点击&#xff0c;打开更改数据源对话框&#xff0c;找到它原始的数据源&#xff0c;确定。 but。。。为啥只修复…

将CentOS 7安装在U盘上,这时你将体验到......

文章目录 前言一、Linux 是什么&#xff1f;二、使用步骤1.下载安装 VMware Workstation Pro2.下载 CentOS 镜像3.准备一个U盘&#xff08;最好是32G以上的&#xff09;4.VMware 里安装 CentOS 总结 前言 随着 Linux 在服务器、嵌入式系统、移动设备等领域的广泛应用&#xff…

【通义千问系列】Qwen-Agent 从入门到精通【持续更新中……】

目录 前言一、快速开始1-1、介绍1-2、安装1-3、开发你自己的Agent 二、Qwen-Agent的使用和开发过程2-1、Agent2-1-1、Agent使用2-1-2、Agent开发 2-2、Tool2-2-1、工具使用2-2-2、工具开发 2-3、LLM2-3-1、LLM使用2-3-2、LLM开发 三、基于Qwen-Agent的案例分析3-1、3-2、 总结 …

Linux i2c工具——i2c_tools

1 简介 i2c-tools是一个用于处理I2C&#xff08;Inter-Integrated Circuit&#xff09;总线的工具集&#xff0c;它在Linux环境中广泛使用。这个工具集包含了一系列命令行工具&#xff0c;用于在I2C总线上执行各种操作&#xff0c;例如扫描设备、读取/写入寄存器、检测设备等。…

【jitsi】jitsi 布署及docker打包

目录 单独的布署 最后总结的成果 旧的架构 单独的布署 最后总结的成果 http://10.30.40.10/dualvenDoc/installjitsi/ 旧的架构 wvp视频调度平台架构布署图_wvp 架构-CSDN博客

插入法(直接/二分/希尔)

//稳定耗时&#xff1a; 双向冒泡&#xff0c;可指定最大最小值个数MaxMinNum<nsizeof(Arr)/sizeof(Arr[0]), void BiBubbleSort(int Arr[],int n&#xff0c;int MaxMinNum){int left0,rightn-1;int i;bool notDone true;int temp;int minPos;while(left<right&&am…