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

相关文章

  • Numpy数组的切片索引操作

    Numpy数组的切片索引操作

    本文主要介绍了Numpy数组的切片索引操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 关于Python核心框架tornado的异步协程的2种方法详解

    关于Python核心框架tornado的异步协程的2种方法详解

    今天小编就为大家分享一篇关于Python核心框架tornado的异步协程的2种方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python绘制堆叠条形图介绍

    python绘制堆叠条形图介绍

    大家好,本篇文章主要讲的是python绘制堆叠条形图介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • python http通信接口开发示例

    python http通信接口开发示例

    本文主要介绍了python http通信接口开发示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Python实现选择排序

    Python实现选择排序

    选择法也算是入门的一种排序算法,比起冒泡法,它的方法巧妙了一些,它的出发点在于“挑”,每次挑选数组的最值,与前置元素换位,然后继续挑选剩余元素的最值并重复操作。个人认为选择排序的意义不在于排序本身,而在于挑选和置换的方法,对于一些问题很有帮助。
    2017-06-06
  • Python批量转换文件编码格式

    Python批量转换文件编码格式

    需要将工作目录下的文件进行转码,开始的编码是GBK的,需要将其转换为utf-8的。文件较多,手动转换肯定不行,用Python写个脚本来实现。
    2015-05-05
  • Python API 操作Hadoop hdfs详解

    Python API 操作Hadoop hdfs详解

    这篇文章主要介绍了Python API 操作Hadoop hdfs详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Flask框架单例模式实现方法详解

    Flask框架单例模式实现方法详解

    这篇文章主要介绍了Flask框架单例模式实现方法,结合实例形式分析了flask框架单例模式的4种实现方式与相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • Spring http服务远程调用实现过程解析

    Spring http服务远程调用实现过程解析

    这篇文章主要介绍了Spring http服务远程调用实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python 基础学习第二弹 类属性和实例属性

    python 基础学习第二弹 类属性和实例属性

    本人c程序员,最近开始学python,深深的被python的强大所吸引,今后也会把学到的点点滴滴记录下来,现在分享一下关于类属性和实例属性的一些问题,很基础的东西
    2012-08-08

最新评论