【基础绘图】 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.hqwc.cn/news/691399.html

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

相关文章

Stable Diffusion是什么?

目录 一、Stable Diffusion是什么? 二、Stable Diffusion的基本原理 三、Stable Diffusion有哪些运用领域? 一、Stable Diffusion是什么? Stable Diffusion是一个先进的人工智能图像生成模型,它能够根据文本描述创造出高质量的图…

2024 年“泰迪杯”A 题:生产线的故障自动识别与人员配置--第四题(用遗传算法解决生产线排班问题--matlab代码)

问题背景: 问题四:根据实际情况,现需要扩大生产规模,将生产线每天的运行时间从 8 小时增加 到 24 小时不间断生产,考虑生产线与操作人员的搭配,制定最佳的操作人员排班方案,要求满足以下条件&am…

vi\vim编辑器

root用户(超级管理员) 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中,拥有最大权限的账户名为:root(超级管理员) root用户拥有最大的系统操作权限,而普通…

手把手教你用 spacy3 训练中文NER

文章目录 模型文件下载训练模型准备数据转化成 doc_bin 格式模型训练配置生成初始配置补全完整配置 开始训练 测试模型参考文献 模型文件下载 https://github.com/explosion/spacy-models/releases?qzh&expandedtrue 简单测试一下ner效果,发现根本不能用 训…

二叉树的非递归遍历(c++)

前序 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/binary-tree-preorder-traversal/description/ 1---2---4---5--…

百度地图API 快速入门

一、创建一个应用 创建成功可以在应用程序中查看到自己的ak密钥 二、基本使用 2.1 显示地图 在static下创建demo1.html &#xff08;将密钥换成自己的就可以显示地图了&#xff09; 示例&#xff1a; <!DOCTYPE html> <html> <head><meta name"…

windows和 Linux 下通过 QProcess 打开ssh 和vnc

文章目录 SSHSSH验证启动SSH一、口令登录二、公钥登录通过Qprocess 启动ssh VNC Viewer简介通过QProcess启动vncViewer SSH Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的**安全网络协议**。它是专为远程登录会话(**甚至可以…

sscanf字符串解析

ATCIPSNTPTIME? //发生的指令 CIPSNTPTIME:Tue Oct 19 15:17:56 2021 //回复的数据 //接受数据缓存 char* recvStrBuf "CIPSNTPTIME:Tue Oct 19 15:17:56 2021"; char* weekStr; char* monthStr; int day,hour,minute,second,year; sscanf(recvStrBuf,""…

【计算机网络】计算机网络概述、计算机网络性能指标 习题1

0 1. 计算机网络可被理解为( )。 A.执行计算机数据处理的软件模块 B. 由自治的计算机互连起来的集合体 C.多个处理器通过共享内存实现的紧耦合系统 D. 用于共同完成一项任务的分布式系统 0 2.计算机网络最基本的功能是( )。 A.数据通信 B. 资源共享 C. 分布式处理 D. 信息综合…

保健品小程序商城线上经营的作用是什么

保健品涵盖酒水、醋、食品等多个类型&#xff0c;无论厂商还是经销商&#xff0c;手里的品牌和数量都比较多&#xff0c;由于特殊性&#xff0c;商家经营时需要找到目标客户&#xff0c;而市场中虽然有大量客户&#xff0c;但商家实际想要触达却并不容易。 渠道多样化&#xf…

情感感知OCR:整合深度学习技术提升文字识别系统的情感理解能力

摘要&#xff1a;随着深度学习技术的发展&#xff0c;文字识别&#xff08;OCR&#xff09;系统在识别准确率和速度上取得了长足的进步。然而&#xff0c;在处理文本时&#xff0c;仅仅依靠字符和词语的识别并不足以满足用户对信息的全面理解需求。本文提出了一种新颖的方法&am…

C++_红黑树的学习

1. 红黑树的概念 红黑树 &#xff0c;是一种 二叉搜索树 &#xff0c;但 在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是 Red 或 Black 。 通过对 任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍 &…