分布(四)利用python绘制小提琴图

分布(四)利用python绘制小提琴图

小提琴图 (Violin plot)简介

1

小提琴图主要用于显示数据分布及其概率密度。中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间(以外则为异常点),而白点则为中位数。小提琴图结合了箱线图和密度图的优点,既可以了解数据统计信息,也可以了解数据分布特点。

快速绘制

  1. 基于seaborn

    import seaborn as sns
    import matplotlib.pyplot as plt
    sns.set(style="darkgrid")
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 利用violinplot函数绘制小提琴图
    sns.violinplot(x=df["species"], y=df["sepal_length"])
    
    plt.show()
    

    2

定制多样化的小提琴图

自定义小提琴图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

seaborn主要利用violinplot绘制小提琴图,可以通过seaborn.violinplot了解更多用法

  1. 绘制多个小提琴图
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题

# 导入数据
df = sns.load_dataset('iris')
df_tips = sns.load_dataset('tips')

fig, ax = plt.subplots(1,3, figsize=(12,4))

# 多个数值变量的小提琴图
sns.violinplot(data=df.iloc[:,0:2], ax=ax[0])
ax[0].set_title('多个数值变量')

# 一个数值变量多个分组的小提琴图
sns.violinplot( x=df["species"], y=df["sepal_length"], ax=ax[1] )
ax[1].set_title('一个数值变量多个分组')

# 一个数值变量多个分组子分组的小提琴图
sns.violinplot(x="day", y="total_bill", hue="smoker", data=df_tips, palette="Pastel1", ax=ax[2])
ax[2].set_title('一个数值变量多个分组/子分组')

plt.tight_layout()
plt.show()

3

  1. 自定义小提琴图

    • 自定义形状
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 构造子图
    fig, ax = plt.subplots(1,3,constrained_layout=True, figsize=(12, 4))
    
    # 自定义线宽
    ax_sub = sns.violinplot(x=df["species"], y=df["sepal_length"], linewidth=5, ax=ax[0])
    ax_sub.set_title('自定义线宽')
    
    # 自定义宽度
    ax_sub = sns.violinplot(x=df["species"], y=df["sepal_length"], width=0.3, ax=ax[1])
    ax_sub.set_title('自定义宽度')
    
    # 自定义方向
    ax_sub = sns.violinplot(y=df["species"], x=df["sepal_length"], ax=ax[2])
    ax_sub.set_title('自定义方向')
    
    plt.show()
    

    4

    • 自定义颜色
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 构造子图
    fig, ax = plt.subplots(1,4,constrained_layout=True, figsize=(12, 4))
    
    # 分配调色板
    ax_sub = sns.violinplot(x=df["species"], y=df["sepal_length"], palette="Blues", ax=ax[0])
    ax_sub.set_title('分配调色板')
    
    # 统一颜色
    ax_sub = sns.violinplot(x=df["species"], y=df["sepal_length"], color='skyblue', ax=ax[1])
    ax_sub.set_title('统一颜色')
    
    # 指定颜色
    my_pal = {"versicolor": "g", "setosa": "b", "virginica":"m"}
    ax_sub = sns.violinplot(x=df["species"], y=df["sepal_length"], palette=my_pal, ax=ax[2])
    ax_sub.set_title('指定颜色')
    
    # 突出颜色:针对指定组
    my_pal = {species: "r" if species == "versicolor" else "b" for species in df.species.unique()}
    ax_sub = sns.violinplot(x=df["species"], y=df["sepal_length"], palette=my_pal, ax=ax[3])
    ax_sub.set_title('突出颜色')
    
    plt.show()
    

    5

    • 自定义顺序
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
    
    # 导入数据
    df = sns.load_dataset('iris')
    
    # 构造子图
    fig, ax = plt.subplots(1,2,constrained_layout=True, figsize=(8, 4))
    
    # 自定义顺序
    ax_sub = sns.violinplot(x='species', y='sepal_length', data=df, order=["versicolor", "virginica", "setosa"], ax=ax[0])
    ax_sub.set_title('指定顺序')
    
    # 按统计量降序:中位数
    my_order = df.groupby(by=["species"])["sepal_length"].median().iloc[::-1].index
    ax_sub = sns.violinplot(x='species', y='sepal_length', data=df, order=my_order, ax=ax[1])
    ax_sub.set_title('中位数降序')
    
    plt.show()
    

    6

  2. 添加额外数据信息

# 添加数据点-蜂窝数据(避免某分组数据过少导致误判)

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题

# 导入数据
data = pd.read_csv('https://raw.githubusercontent.com/holtzy/The-Python-Graph-Gallery/master/static/data/sqa_data.csv')

# 自定义颜色
swarmplot_palette = {'Sqa_par':'#8f96bf', 'Sqa_bif':'#ebb0e5', 'Sqa_zz':'#9feed3'}
violin_palette = {'Sqa_par':'#333c70', 'Sqa_bif':'#90367c', 'Sqa_zz':'#34906c'}

# 初始化
sns.set_context('notebook', font_scale=1.2)
fig, ax = plt.subplots(figsize=(9,5))

# 绘制小提琴图
ax = sns.violinplot(y="dist", 
                    x="name", 
                    data=data,
                    palette=violin_palette,
                    scale='count',
                    inner=None
              )

# 绘制蜂窝图
ax = sns.swarmplot(y="dist",
                   x="name",
                   hue="name",
                   data=data, 
                   color="white", 
                   edgecolor="gray",
                   s=5,
                   palette=swarmplot_palette
             )

# 修改标题等信息
ax.set_xticks([0, 1, 2], ['Parallel','Bifurcated','Zig-zag'])
ax.set_xlabel('Squaramide CCSD systems')
ax.set_ylabel(r'$HB distance\ (\AA)$')
plt.ylim(1.5, 3.5)

plt.show()

7

总结

以上通过seaborn的violinplot可以快速绘制小提琴图,并通过修改参数或者辅以其他绘图知识自定义各种各样的小提琴图来适应相关使用场景。

共勉~

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

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

相关文章

如何理解工程管理,与项目管理的区别与联系?

如何理解工程管理,与项目管理的区别与联系? 首先,项目管理并不是工程管理的子集,大家可能混淆了另一个“工程项目管理”的概念。 工程项目管理模板一键安装,进入链接即可查看和使用:https://www.jiandaoyu…

Redis 之三:Redis 的发布订阅(pub/sub)

概念介绍 Redis 发布订阅 (pub/sub) 是一种消息通信模式,它允许客户端之间进行异步的消息传递 Redis 客户端可以订阅任意数量的频道。 模型中的角色 在该模型中,有三种角色: 发布者(Publisher):负责发送信…

《Trustzone/TEE/安全-实践版》介绍

第一章:课程说明和准备 课程介绍和说明 资料准备 为什么使用qemu_v8环境? 为什么选择香橙派开发板? optee qemu_v8环境展示 香橙派optee环境展示 第二章:Qemu环境搭建 ubuntu20.04的安装(virtualboxubuntu20.04) 搭建optee qem…

【C语言】剖析qsort函数的实现原理

主页:17_Kevin-CSDN博客 专栏:《C语言》 本文将从回调函数,qsort函数的应用,qsort函数的实现原理三个方面进行讲解,请自行跳转至相对位置进行阅读~ 目录 回调函数 qsort函数的应用 qsort函数实现原理 回调函数 什…

可让照片人物“开口说话”阿里图生视频模型EMO,高启强普法

3 月 1 日消息,阿里巴巴研究团队近日发布了一款名为“EMO(Emote Portrait Alive)”的 AI 框架,该框架号称可以用于“对口型”,只需要输入人物照片及音频,模型就能够让照片中的人物开口说出相关音频&#xf…

HTML+CSS+BootStrap景区官网

一、技术栈 支持pc、pad、手机访问,页面自适应!! html5cssbootstrapjs 二、项目截图 接受项目定制,站内联系博主!!!

CPython:比较运算符串联的差异

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 在C语言和Python中,比较运算符是一个常用的运算符,但这两种语言在某些情况下对比较运算符的解析缺存在差异,本文旨在明确这一点。 P…

【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:从入门到入魔》 🚀 本…

STM32(13)串口

串口的数据帧 1.空闲 2.起始位 3.数据位 4.校验位(可有可无) 为了验证数据传输是否出错而设立的比特位 1和4传输方式比较常见 校验规则: 根据1的个数,校验位会自己补0或1 5.停止位 例子: 同步通信 异步通信 波特率 …

避坑——Matlab c# 联合编程——Native

相同的库,Matlab生成供.net调用的库时会有两套,也就是Native(本地),两套库各有优缺点,这这里就不说了,可以翻看网上其他博文 主要是MWStructArray,MWArray等数据交换对象有两套&…

魔行观察-蜜雪冰城-2008年至2023年的开店趋势图

闲来无事做,用魔行观察-魔查查上的品牌门店数据简单分析了一下知名饮品类品牌:蜜雪冰城 从2008年开始一直到2023年11月份的开店情况,发现在2022年是开得最猛的,确实牛皮。 魔查查数据获取地址:魔查查https://www.moxi…

【开发工具】GIF 录屏工具推荐 ( GIF123 - 推荐使用 | GifCam | LICEcap )

文章目录 一、GIF 录屏工具推荐1、GIF123 ( 推荐使用 )2、GifCam3、LICEcap 本博客中介绍的 3 款 GIF 录屏工具下载地址 : https://download.csdn.net/download/han1202012/88905642 也可以到对应的官网独立下载 : GIF123 : https://gif123.aardio.com/ ;GifCam : https://bl…

如何一键批量采集拼多多商品图片?无压缩高清主图/sku图/详情和视频下载|拼多多商品数据采集接口

大家好,这期我教下大家怎么下载拼多多上面的商品主图、详情页图、SKU图、主图视频、详情页视频的下载教程~~ 运营一个多多电商店铺,上架商品,我们都需要采集大量的商品图片进行分析和参考,一张张下载的话将耗费大量时间和精力&am…

美摄科技实时语音数字人解决方案

随着科技的飞速发展,数字人技术已经逐渐渗透到我们生活的各个角落。作为数字人技术的先驱者,美摄科技凭借其卓越的实时语音数字人解决方案,正引领着企业步入一个全新的交互时代。 美摄科技的实时语音数字人解决方案,是基于语音和…

小米消息队列的选型与实践

之前写了一篇关于消息队列的文章:《消息队列介绍与对比》,本文主要介绍消息队列在实际工作中的使用情况(截止到2023年,因为我2023年离职了,后续的情况不了解了,哈哈)。 市面上的多种消息队列都有…

STM32CubeMX实战教程: TIM6、TIM7 - 基本定时器

基本定时器的作用 基本定时器,主要用于实现定时和计数功能。作用包括: 定时功能:可以产生周期性的中断,用于实现定时任务。例如,可以设置一个定时器每隔一定时间(如1秒)产生一次中断&#xff0…

【图像版权】论文阅读:CRMW 图像隐写术+压缩算法

不可见水印 前言背景介绍ai大模型水印生成产物不可见水印CRMW 在保护深度神经网络模型知识产权方面与现有防御机制有何不同?使用图像隐写术和压缩算法为神经网络模型生成水印数据集有哪些优势?特征一致性训练如何发挥作用,将水印数据集嵌入到…

带大家做一个,易上手的水煮牛肉

今天带大家做川菜系中的 水煮牛肉 这个菜是比较费辣椒的 制作成本相对一般菜来说 会高一些 一块牛肉 泡水划冰 从超时买的干腐竹 切成小片 温水浸泡五分钟 泡软它 然后捞出来 去干水分 牛肉切片 尽量切薄一点 三瓣左右蒜 一块生姜 去皮切末 牛肉中下入 一个鸡蛋 小半勺…

【网站项目】136公司项目管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

大日志精选案例一:南京师范大学教育信息化安全实践

南京师范大学,由江苏省人民政府和中华人民共和国教育部共建,是国家“211工程”重点建设的江苏省属重点大学。在南京师范大学的教育信息化建设过程中,网络安全被视为重中之重。为了保障教学、科研和教务管理等信息化工作的安全进行&#xff0c…
最新文章