Python+Matplotlib绘制小提琴图的示例代码

 更新时间:2023年06月07日 08:30:23   作者:SpikeKing  
小提琴图 (Violin Plot) 类似纺锤,是一种用来显示数据分布和概率密度的图形,本文为大家介绍了Matplotlib绘制小提琴图的函数源码,需要的可以参考一下

小提琴图 (Violin Plot) 类似纺锤,小提琴图是一种用来显示数据分布和概率密度的图形,结合了箱线图和核密度图的特点。小提琴图的中间部分是一个箱线图,显示了数据的中位数、四分位数和异常值。小提琴图的两侧是一个核密度图,显示了数据的分布形状。小提琴图可以用来比较不同类别或分组的数据,展示数据的差异和相似性。

示例如下:

源码如下:

#!/usr/bin/env python
# -- coding: utf-8 --
"""
Copyright (c) 2022. All rights reserved.
Created by C. L. Wang on 2023/6/6
"""
import os

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

from myutils.project_utils import read_excel_to_df
from root_dir import DATA_DIR


def draw_violin_plot(
  df, score_col_name, label_col_name,
  x_label="", y_label="", title="",
  is_show=False, save_name=""):
  """
  绘制小提琴图
  :param df: 数据格式,至少包括两列,即数据值列score,标签列label,相同类别的标签相同
  :param score_col_name: 数值列名称
  :param label_col_name: 标签列名称
  :param x_label: 显示的x标签
  :param y_label: 显示的y标签
  :param title: 显示的图名称
  :param is_show:  是否IDE显示
  :param save_name: 是否存储文件,tight格式
  :return:
  """
  plt.figure(figsize=(16, 10), dpi=80)
  sns.violinplot(x=label_col_name, y=score_col_name, data=df, inner='quartile')

  plt.xlabel(xlabel=x_label)
  plt.ylabel(ylabel=y_label)

  if title:
    plt.title(title, fontsize=12)
  if save_name:
    # transparent=True
    plt.savefig(save_name, bbox_inches='tight', format='png')
  if is_show:
    plt.show()

def main():
  df = read_excel_to_df(os.path.join(DATA_DIR, "ourbest_20230601_tmscore_56.xls"))
  # df = read_excel_to_df(os.path.join(DATA_DIR, "ourbest_20230605_dockq_9_final.xls"))
  # df.info()

  # 加工数据格式,满足数值和标签的格式
  score1 = df["m0-score"]
  score2 = df["m1-score"]
  score3 = df["cur-score"]
  label_col = ["SOTA" for _ in range(df["m0-score"].size)] + \
              ["Baseline" for _ in range(df["m1-score"].size)] + \
              ["Our Best" for _ in range(df["cur-score"].size)]
  score_list = pd.concat([score1, score2, score3])
  score_name = "DockQ"
  data = {score_name: score_list, "label": label_col}
  new_df = pd.DataFrame(data)
  # df.info()
  draw_violin_plot(new_df, score_col_name=score_name, label_col_name="label",
                   x_label="", y_label=score_name,
                   is_show=True, save_name="xxx.png")


if __name__ == '__main__':
  main()

到此这篇关于Python+Matplotlib绘制小提琴图的示例代码的文章就介绍到这了,更多相关Python Matplotlib绘制小提琴图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析

    Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析

    这篇文章主要给大家介绍了关于Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-05-05
  • Python3获取拉勾网招聘信息的方法实例

    Python3获取拉勾网招聘信息的方法实例

    这篇文章主要给大家介绍了关于Python3获取拉勾网招聘信息的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • python使用正则表达式匹配反斜杠\遇到的问题

    python使用正则表达式匹配反斜杠\遇到的问题

    在学习Python正则式的过程中,有一个问题一直困扰我,如何去匹配一个反斜杠(即“\”),下面这篇文章主要给大家介绍了关于python使用正则表达式匹配反斜杠\的相关资料,需要的朋友可以参考下
    2022-09-09
  • 使用Python实现PDF文本的自动替换或修改功能

    使用Python实现PDF文本的自动替换或修改功能

    在处理PDF文档时,我们有时会遇到需要更新文档中文字内容的情况,手动打开 PDF 文件,逐一查找并修改文字内容是一项繁琐且容易出错的工作,这篇文章将介绍如何使用Python实现PDF文本的自动替换,需要的朋友可以参考下
    2025-02-02
  • python中requests库+xpath+lxml简单使用

    python中requests库+xpath+lxml简单使用

    这篇文章主要介绍了python中requests库+xpath+lxml简单使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python压缩包处理模块zipfile和py7zr操作代码

    Python压缩包处理模块zipfile和py7zr操作代码

    目前对文件的压缩和解压缩比较常用的格式就是zip格式和7z格式,这篇文章主要介绍了Python压缩包处理模块zipfile和py7zr,需要的朋友可以参考下
    2022-06-06
  • python如何判断IP地址合法性

    python如何判断IP地址合法性

    这篇文章主要为大家详细介绍了python如何判断IP地址合法性,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • python正则表达式re.sub各个参数的超详细讲解

    python正则表达式re.sub各个参数的超详细讲解

    Python 的 re 模块提供了re.sub用于替换字符串中的匹配项,下面这篇文章主要给大家介绍了关于python正则表达式re.sub各个参数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python栈的实现方法示例【列表、单链表】

    Python栈的实现方法示例【列表、单链表】

    这篇文章主要介绍了Python栈的实现方法,结合实例形式分析了Python基于列表、单链表定义栈的相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • Windows系统下安装Python的SSH模块教程

    Windows系统下安装Python的SSH模块教程

    这篇文章主要介绍了Windows系统下安装Python的SSH模块教程,本文涵盖了pycrypto、ecdsa、paramiko、OpenSSH、SSH等模块的安装,需要的朋友可以参考下
    2015-02-02

最新评论