Python+Matplotlib绘制发散条形图的示例代码

 更新时间:2023年06月06日 15:29:53   作者:SpikeKing  
发散条形图(Diverging Bar)是一种用于显示数据分布的图表,可以帮助我们比较不同类别或分组的数据的差异和相对性,本文介绍了Matplotlib绘制发散条形图的函数源码,需要的可以参考一下

发散条形图(Diverging Bar)是一种用于显示数据分布的图表,可以帮助我们比较不同类别或分组的数据的差异和相对性。发散条形图的特点是,以一个中心点为基准,将数据分为两个方向,通常用不同的颜色来表示正负或高低。

示例如下:

源码如下:

#!/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

from myutils.project_utils import read_excel_to_df
from root_dir import DATA_DIR


def diverging_bar(
  df, value_col, y_ticks_col, x_label="", y_label="", title="",
  is_grid=False, is_show=False, save_name=""
):
  """
  默认数据存储至 df["diff"] 字段
  :param df: 数据
  :param value_col: 数值列
  :param y_ticks_col: 标签列
  :return:
  """
  # 准备数据
  df['colors'] = ['red' if x < 0 else 'green' for x in df[value_col]]
  df.sort_values(value_col, inplace=True)
  df.reset_index(inplace=True)
  plt.figure(figsize=(12, 12), dpi=80)

  # 设置数据
  plt.hlines(y=df.index, xmin=0, xmax=df[value_col], color=df.colors, alpha=0.4, linewidth=8)
  # 设置标签
  # plt.yticks(df.index, df[y_ticks_col], fontsize=12)  # y轴
  plt.yticks(df.index, df[y_ticks_col], fontsize=12)  # y轴

  # 设置图表说明
  if x_label:
    plt.gca().set(xlabel=f'${x_label}$')
  if y_label:
    plt.gca().set(ylabel=f'${y_label}$')  # $$符号表示斜体
  plt.title(title, fontdict={'size': 12})

  if is_grid:  # 显示网格
    plt.grid(linestyle='--', alpha=0.5)
  if save_name:
    plt.savefig(save_name, bbox_inches='tight', format='png', transparent=True)
  if is_show:
    plt.show()

def main():
  # df = read_excel_to_df(os.path.join(DATA_DIR, "ourbest_20230605_dockq_9_final.xls"))
  df = read_excel_to_df(os.path.join(DATA_DIR, "ourbest_20230601_tmscore_56.xls"))
  x1 = df["m0-score"]
  x2 = df["m2-score"]
  # x2 = df["m1-score"]
  df["diff"] = x2 - x1
  df.info()
  diverging_bar(
    df, value_col="diff", y_ticks_col="target",
    x_label="DockQ", y_label="Target", title="",
    is_show=True, save_name="xxx.png")


if __name__ == '__main__':
  main()

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

相关文章

  • python 获取list 长度

    python 获取list 长度

    这篇文章主要介绍了python 获取list 长度 ,下面文章我们将研究获取长度列表的不同方法,使用内置的len()函数,len是默认情况下python提供的内置函数,下面进入文章了解更多的详细内容吧
    2022-02-02
  • Python使用PyPDF2轻松实现pdf的拆分与合并

    Python使用PyPDF2轻松实现pdf的拆分与合并

    日常工作中使用 pdf 文件时,拆分与合并是一个十分常见的操作,本文详细介绍了使用Python3和PyPDF2库实现PDF文件的拆分与合并操作,文中的示例代码讲解详细,需要的小伙伴可以参考下
    2026-04-04
  • Python中DataFrame中的xs用法

    Python中DataFrame中的xs用法

    本文主要介绍了Python中DataFrame中的xs用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Python日期时间处理库dateutil详解

    Python日期时间处理库dateutil详解

    dateutil 为 Python 标准库 datetime 提供了强大的扩展,这篇文章主要介绍了Python日期时间处理库dateutil,需要的朋友可以参考下
    2022-09-09
  • Python中拆分字符串的操作方法

    Python中拆分字符串的操作方法

    这篇文章主要介绍了Python中拆分字符串的操作方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • python 全局变量的import机制介绍

    python 全局变量的import机制介绍

    在之前学习python设计模式(工厂模式实践篇),希望使用全局变量代替c++的宏完成服务自动注册功能时,遇到过一个问题,全局变量的定义和使用放在同一个可执行脚本中的问题
    2017-09-09
  • Python操作redis实例小结【String、Hash、List、Set等】

    Python操作redis实例小结【String、Hash、List、Set等】

    这篇文章主要介绍了Python操作redis的常见方法,结合实例形式总结分析了Python redis操作中String、Hash、List、Set等相关操作函数与使用技巧,需要的朋友可以参考下
    2019-05-05
  • 浅谈django orm 优化

    浅谈django orm 优化

    这篇文章主要介绍了浅谈django orm 优化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Python使用sigthief签发证书的实现步骤

    Python使用sigthief签发证书的实现步骤

    Windows 系统中的一些非常重要文件通常会被添加数字签名,其目的是用来防止被篡改,能确保用户通过互联网下载时能确信此代码没有被非法篡改和来源可信,从而保护了代码的完整性、保护了用户不会被病毒、恶意代码和间谍软件所侵害,本章将演示证书的签发与伪造
    2021-06-06
  • 基于Python编写一个Excel转XML格式转换工具

    基于Python编写一个Excel转XML格式转换工具

    在日常开发工作中,我们经常需要处理不同格式的数据转换,今天分享一个实用的Python脚本,它能够将Excel中的数据自动转换为符合特定格式要求的XML文件,这个工具特别适合处理配置文件、本地化文件、元数据转换等场景,需要的朋友可以参考下
    2025-09-09

最新评论