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绘制小提琴图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python开发中常用操作方法代码汇总笔记

    Python开发中常用操作方法代码汇总笔记

    Python具有易学、易用、易扩展、可移植性强等特点,被广泛应用于数据分析、人工智能、Web开发、自动化测试等领域。Python在使用过程中也会遇到一些常见技术问题,本文汇总Python开发中实用操作方法代码笔记。
    2023-06-06
  • Python爬虫:将headers请求头字符串转为字典的方法

    Python爬虫:将headers请求头字符串转为字典的方法

    今天小编就为大家分享一篇Python爬虫:将headers请求头字符串转为字典的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python语言中Tuple的由来分析

    Python语言中Tuple的由来分析

    Tuple在Python中表示一种“大小固定的有序序列”,这篇文章主要介绍了Python语言中Tuple的由来,需要的朋友可以参考下
    2022-09-09
  • 关于 Python json中load和loads区别

    关于 Python json中load和loads区别

    这篇文章主要介绍了关于 Python json中load和loads区别,文章也有简单的说明它们之间的相同点,然后详细介绍不同点,需要的朋友可以参考一下文章的具体内容
    2021-11-11
  • 三步快速实现Python解包EXE文件获取源码的完整教学

    三步快速实现Python解包EXE文件获取源码的完整教学

    你是否曾经遇到过这样的情况,需要分析一个Python打包的可执行文件,但却无法获取原始代码,Python EXE解包技术正是解决这个问题的关键,下面我们就来看看Python解包exe的具体步骤吧
    2026-01-01
  • Python实现图像的垂直投影示例

    Python实现图像的垂直投影示例

    今天小编就为大家分享一篇Python实现图像的垂直投影示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python pandas.DataFrame.loc函数使用详解

    python pandas.DataFrame.loc函数使用详解

    这篇文章主要介绍了python pandas.DataFrame.loc函数使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python通过实例讲解反射机制

    python通过实例讲解反射机制

    这篇文章主要介绍了python通过实例讲解反射机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python简单基础小程序的实例代码

    Python简单基础小程序的实例代码

    这篇文章主要介绍了Python简单基础小程序的实例代码,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • python实现员工管理系统

    python实现员工管理系统

    这篇文章主要介绍了python实现员工管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论